# Full text of "OMNITAB II user's reference manual"

## See other formats

lira states iRTMENT OF MMERCE JUCATION VS •dm* f NBS TECHNICAL NOTE 552 National Bureau of Standards Library, _ £-01 Admin. Bidg. OCT 6 198J 131096 /bo OMNITABI User's Reference Manual U.S. PARTMENT OF COMMERCE National Bureau of Standards NATIONAL BUREAU OF STANDARDS The National Bureau of Standards 1 was established by an act of Congress March 3, 1901. The Bureau's overall goal is to strengthen and advance the Nation's science and technology and facilitate their effective application for public benefit. To this end, the Bureau conducts research and provides: (1) a basis for the Nation's physical measure- ment system, (2) scientific and technological services for industry and government, (3) a technical basis for equity in trade, and (4) technical services to promote public safety. The Bureau consists of the Institute for Basic Standards, the Institute for Materials Research, the Institute for Applied Technology, the Center for Computer Sciences and Technology, and the Office for Information Programs. THE INSTITUTE FOR BASIC STANDARDS provides the central basis within the United States of a complete and consistent system of physical measurement; coordinates that system with measurement systems of other nations; and furnishes essential services leading to accurate and uniform physical measurements throughout the Nation's scien- tific community, industry, and commerce. The Institute consists of a Center for Radia- tion Research, an Office of Measurement Services and the following divisions: Applied Mathematics — Electricity — Heat — Mechanics — Optical Physics — Linac Radiation 2 — Nuclear Radiation 2 — Applied Radiation 2 — Quantum Electronics 3 — Electromagnetics 3 — Time and Frequency 3 — Laboratory Astrophysics 3 — Cryo- genics 3 . THE INSTITUTE FOR MATERIALS RESEARCH conducts materials research lead- ing to improved methods of measurement, standards, and data on the properties of well-characterized materials needed by industry, commerce, educational institutions, and Government; provides advisory and research services to other Government agencies; and develops, produces, and distributes standard reference materials. The Institute con- sists of the Office of Standard Reference Materials and the following divisions: Analytical Chemistry — Polymers — Metallurgy — Inorganic Materials — Reactor Radiation — Physical Chemistry. THE INSTITUTE FOR APPLIED TECHNOLOGY provides technical services to pro- mote the use of available technology and to facilitate technological innovation in indus- try and Government; cooperates with public and private organizations leading to the development of technological standards (including mandatory safety standards), codes and methods of test; and provides technical advice and services to Government agencies upon request. The Institute also monitors NBS engineering standards activities and provides liaison between NBS and national and international engineering standards bodies. The Institute consists of the following technical divisions and offices: Engineering Standards Services — Weights and Measures — Flammable Fabrics — Invention and Innovation — Vehicle Systems Research — Product Evaluation Technology— Building Research — Electronic Technology — Technical Analysis — Measurement Engineering. THE CENTER FOR COMPUTER SCIENCES AND TECHNOLOGY conducts re- search and provides technical services designed to aid Government agencies in improv- ing cost effectiveness in the conduct of their programs through the selection, acquisition, and effective utilization of automatic data processing equipment; and serves as the prin- cipal focus within the executive branch for the development of Federal standards for automatic data processing equipment, techniques, and computer languages. The Center consists of the following offices and divisions: Information Processing Standards- — Computer Information— Computer Services — Systems Development — Information Processing Technology. THE OFFICE FOR INFORMATION PROGRAMS promotes optimum dissemination and accessibility of scientific information generated within NBS and other agencies of the Federal Government; promotes the development of the National Standard Reference Data System and a system of information analysis centers dealing with the broader aspects of the National Measurement System; provides appropriate services to ensure that the NBS staff has optimum accessibility to the scientific information of the world, and directs the public information activities of the Bureau. The Office consists of the following organizational units: Office of Standard Reference Data — Office of Technical Information and Publications — Library — Office of Public Information — Office of International Relations. 1 Headquarters and Laboratories at Gaithersburg, Maryland, unless otherwise noted; mailing address Washing- ton, D.C. 20234. 2 Part of the Center for Radiation Research. 3 I nratrH at Ronlrier rr.lr.raHn 80107 10 UNITED STATES DEPARTMENT OF COMMERCE Maurice H. Stans, Secretary NATIONAL BUREAU OF STANDARDS • Lewis M. Branscomb, Director .5 NBS TECHNICAL NOTE 552 ISSUED OCTOBER 1971 Nat. Bur. Stand. (U.S.), Tech. Note 552, 264 pages (Oct. 1971) CODEN: NBTNA OMNITAB H User's Reference Manual David Hogben, Sally T. Peavy, and Ruth N. Varner Statistical Engineering Laboratory Applied Mathematics Division Institute for Basic Standards National Bureau of Standards Washington, D.C. 20234 NBS Technical Notes are designed to supplement the Bureau's regular publications program. They provide a means for making available scientific data that are of transient or limited interest. Technical Notes may be listed or referred to in the open literature. For sale by the Superintendent of Documents, U.S. Government Printing Office Washington, D.C. 20402 - Price $2 $ ^ Stock Number 0303-0918 OMNITAB II User's Reference Manual David Hogben, Sally T. Peavy and Ruth N. Varner OMNITAB II, a highly user-oriented system for a large computer, is designed to make computing easy, accurate and effective, particularly for persons who are not programmers. It is a general -purpose program, which can be learned quickly, for both simple and complex numerical, statistical and data analysis. OMNITAB executes instructions written in the form of simple English sentences. Problem- solving is further enhanced by the natural structure of the system and its many features . OMNITAB has been used successfully in government, industry and universities across the country and in several centers abroad. The system has been implemented on large computers of at least seven different manufacturers. The original version of OMNITAB has been completely rewritten to make it as machine independent as possible and to implement many improvements. This manual describes Version 5.0. Details are presented so that the user can easily find the specific information needed in any particular instance. PART A is a simple, compact introduction to OMNITAB for people who have had no experience using a large computer. PART B describes the general and special features of the OMNITAB system. PART C gives explanations, with short examples, for the use of specific instructions. PART D is a complete alphabetical list of the instructions which are in the system. Key words: Automatic printing, Bessel functions, data analysis, data manipulation, easy and effective programming in English, list of instructions, matrix operations, numerical analysis, OMNITAB II user oriented computing system, self-teaching, statistical analysis. Introduction ' OMNITAB is an interpretative computing system developed and maintained by the National Bureau of Standards to enable scientists to use a large computer easily, effectively and accurately for numerical, statistical and data analysis without having to become professional programmers. It was conceived by Joseph Hilsenrath about ten years ago and subsequently developed by him and his colleagues. A complete description of the first Version of OMNITAB is given in HILSENRATH, J., ZIEGLER, G. G. , MESSINA, C. G., WALSH P. J. and HERBOLD, R. J. (1966). OMNITAB: A Computer Program for Statistical and Numerical Analysis , National Bureau of Standards Handbook 101, Superintendent of Documents, U.S. Government Printing Office, Washington, D.C. 20402. Reissued 1968 with corrections . During the past five years, the OMNITAB program has been completely rewritten to make it as machine independent as the state of the art will permit. In the course of this revision, numerous additions and improvements have been made which necessitate complete documentation, including a new user's manual. The basic philosophy and spirit of OMNITAB, however, remain the same. After the rewriting of OMNITAB had begun it was decided to refer to the newer versions as OMNITAB II. OMNITAB II is characterized by continual development with new instructions being added and existing instructions being improved. Hence, the present version of OMNITAB II can not be considered complete. In fact, there are some important instructions which were previously available, but so far have not been implemented. After some deliberation, the OMNITAB Steering Committee decided that any further delay in documentation would be unwise and further improvements should be postponed until this documentation is made available. After this manual is published, we shall resume development of OMNITAB II and continually try to respond to users' needs. The manual is divided into four parts. PART A is a simple, compact Introduction to OMNITAB II for people who have had no experience using a large computer or OMNITAB. PART B describes the general features of the OMNITAB II computing system. PART C gives detailed explanations, with short examples, for the use of specific instructions. PART D is a complete alphabetical list of all the instructions which are in the system. A comprehensive table of contents is given at the beginning. In addition, at the beginning of PART C there is a list of commands under functional titles and at the end of PART C there is an index to the commands which are described. The title page of each PART contains a short abstract of the contents. The early history of OMNITAB was described in NBS Handbook 101 and will not be repeated here. Also, there will be no serious attempt to present examples of sets of OMNITAB instructions to solve problems as these appear in Handbook 101. Rather, we shall concentrate on presenting short examples to explain the use of particular instructions and to present more details of the instructions based on accumulated knowledge gained from the widespread use of OMNITAB II. This manual is intended to be a reference manual to accompany the magnetic tape copy of OMNITAB II deposited with the National Technical Information Service (formerly the "Clearinghouse") where the OMNITAB II program can be obtained. See section BS.l for further details, including a description of the other documentation of OMNITAB II. This manual describes Version 5.0 of OMNITAB II which is in operation at the Washington D.C. site of the National Bureau of Standards in the batch processing mode. Users of OMNITAB II Version 5.0 at other computer centers may find some minor differences. Certainly, the control cards (section B1.4) will be different. Certain parameters, such as the size of the worksheet, may vary. Constants affecting overflow and underflow vary from one computer to another. The use of magnetic tapes (section CI. 10) may be different. When operating in the time- sharing mode the action taken when fatal errors occur will be different. The contributions of many NBS mathematicians and scientists were acknowledged in NBS Handbook 101. Many more have contributed to the present Version of OMNITAB. A great deal of the early work of converting OMNITAB to a machine independent form was done by Walter J. Gilbert who also contributed several new features. Much of the present programming and maintenance is done by Sally T. Peavy and Ruth N. Varner with help from Shirley Bremer. David Hogben and Sally T. Peavy, Statistical Engineering Laboratory, direct the development and maintenance of the OMNITAB II computing system. Many users have made valuable suggestions which have led to improvements. Other members of the Statistical Engineering Laboratory have made contributions, particularly to this manual and the formatting for the statistical instructions with automatic printing. Joseph M. Cameron did much to improve the set of instructions for matrix operations, to revise the curve fitting instruction, and to influence the accuracy of the computing algorithms. The following persons have contributed to one or more subprograms for the current Version of OMNITAB II: Walter J. Gilbert, William G. Hall, David Hogben, Robert C. McClenon, Carla G. Messina, Bradley A. Peavy, Sally T. Peavy, M. Stuart Scott, Irene A. Stegun, Ruth N. Varner, Philip J. Walsh, Roy H. Waaler and Ruth Zucker. We thank Bradley A. Peavy for considerable assistance in writing section 9 of PART C, Robert C. McClenon for writing section 10 of PART C and M. Stuart Scott for assistance in writing section C4.6. We thank Shirley G. Bremer for help in proof reading and in the writing of sets of instructions for verifying many of the statements made in the manual. Also, we thank the many readers of a preliminary draft for their comments and corrections. It is impossible to write a manual such as this which is free of errors. Hopefully, the number of errors is small, but we will apprectiate any comments from readers so that we can pass on information to users. How To Read This Manual This is a reference manual; not a textbook. The style is not conducive to cover to cover reading. Rather, it is designed so that the user can easily and quickly locate the information he requires in any specific instance. References are not given at the end of the manual, but appear in the text. There are two exceptions to this rule. Frequent reference is made to Hilsenrath et al. or NBS Handbook 101. The complete reference is given above. In section 4 of PART C, all the references for the statistical instructions are collected together and put in section C4.8. We have tried to supply a liberal amount of cross referencing. References to another section in the same PART of the manual give the section and sub-section number. Reference to a section in another PART prefix the section number by the PART letter as in "C4.8". The novice should study PART A carefully and then peruse the table of contents. By thumbing through PART D, he will quickly grasp the scope of OMNITAB II. He can then proceed at his own pace to learn as much or as little as he requires. Particular attention should be given to the discussion of self -teaching in section B4.1. Sections 1.1, 1.2, 1.3 and 1.4 of PART B and sections 1.1, 1.2 and 1.3 of PART C need to be studied before attempting any computing. No attempt should be made to read the manual from cover to cover. Sections such as B1.8 and B4.4 are best read after the user has gained some experience using OMNITAB II. The descriptions of instructions in PART C are written so that the most important information appears first and secondary information follows. The novice may wish to read only the first few sentences and defer further reading to a later use of the instruction. On the other hand, experienced users may find the opening remarks obvious and find the information they need to clear up some difficulty at the end of the discussion. In several places there is a general discussion at the beginning of a section or sub-section which applies to a group of instructions and this should not be overlooked. The more experienced user may find section Cll, Index Of Commands Described in PART C, most useful. He may also wish to take advantage of some of the special features described in PART B. The experienced user will primarily use PART D. Section B4.1 should also be useful. He may need only occasional reference to PART B and PART C. If OMNITAB is easy to learn and use, why is this manual so long? There are several reasons. First, we have tried to make the manual comprehensive so that virtually all questions will be answered. Second, OMNITAB is very flexible. For example, one can simply PRINT columns of numbers or one can print with a specified number of significant digits, print arrays, print matrices and even print matrices according to a specified FORMAT. Hence, many users' needs are satisifed. For simplicity, the user should use PRINT, but many other options are available. This flexibility in the system necessitates a longer manual. Third, some of the statistical instructions are simple to use, but provide a comprehensive automatic printing which requires a detailed explanation. TABLE OF CONTENTS Introduction ...... How To Read This Manual .... Table Of Contents PART A: BEGINNER'S CMNITAB . 1. An Example. .... 2. Discussion Of Example 3. A Few Simple Rules . 4. A Beginning List Of Instructions 5. How To Use OMNITAB II PART B: THE OMNITAB II COMPUTING SYSTEM 1. HOW TO USE OMNITAB II 1.1 Introduction 1 . 2 Conventions , Definitions . 1.3 A Few Simple Rules 1.4 NBS Operating System Control Cards 1.5 Numbers In Comments . 1.6 NRMAX .... 1.7 Variables V, W, X, Y and Z 1.8 Use Of Asterisks 1.9 The Size Of The Worksheet 1.10 Automatic Printing . 1.11 Two -word Commands 1.12 Abbreviations 1 . 13 Synonyms .... 1.14 Named Constants 1.15 Characters Recognized 1.16 Commands With Qualifiers . 2 . REPEATED USE OF COMMANDS . 2.1 Numbering Instructions 2.2 Use Of PERFORM . 2.3 Use Of INCREMENT 2.4 Instructions Which Must Be Stored 2.5 Instructions Which Cannot Be Stored 2.6 Use Of BEGIN And FINISH . 2.7 Branching ..... 2.8 Additional Comments . 3. DIAGNOSTIC FEATURES AND ACCURACY 3.1 Diagnostic Features . 3.2 Fatal Errors .... 3.3 Arithmetic Faults 3.4 Informative Diagnostics 3.5 Accuracy In The Use Of Instructions 3.6 Accuracy Of Instructions . 4. FOR MORE EFFECTIVE USE OF OMNITAB II 39 4.1 Self -Teaching 39 4.2 A Few Common Errors ........... 40 4.3 Combining Sets Of Instructions ........ 41 4.4 Use Of _FORTRAN Formats . . . .' 41 4.5 Organizing A Set Of Instructions ........ 42 4.6 Some Aids For Writing Sets Of Instructions ...... 43 4.7 An Example Of Table Making 45 5. THE OMNITAB II PROJECT 49 5.1 Availability Of OMNITAB II 49 5.2 OMNITAB II Master Program SO 5.3 Implementation Of OMNITAB II 50 5.4 Operating Mode ............ 51 5.5 Efficiency ............ 51 5.6 Development Of OMNITAB II 51 5.7 Comments From Users ........... 51 5.8 Notices 51 5.9 Newsletters ............ 51 5.10 Recorded Telephone Messages ......... 51 PART C: DESCRIPTIONS OF INSTRUCTIONS 53 List Of Commands ............ 54 1. ENTERING AND PRINTING DATA 56 1.1 Control Instructions. .......... 56 DIMENSION, DUMMY "L", LIST, NO LIST, NULL, CMNITAB, SCAN, STOP 1.2 Entering Data Into .The Worksheet 58 GENERATE, READ, SET 1.3 Common Printing Instructions ......... 60 ABRIDGE, FIXED, FLEXIBLE, FLOATING, NPRINT, PRINT 1.4 Detailed Printing 63 HEAD, NEW PAGE, NOTE, NOTE1, NOTE2 , PRINT NOTE, SPACE, TITLE1, TITLE2, TITLE3, TITLE4 1.5 Plotting Data 65 PAGE PLOT, PLOT, TITLEX, TIT LEY 1.6 Optional Forms Of Readable Printing ....... 70 ABRIDGE, NPRINT, PRINT 1.7 Formatted Printing And Reading ........ 74 ABRIDGE "L", FORMAT "L", NPRINT "L", PRINT "L", READ "L" 1.8 Printing Arrays And Matrices ......... 75 APRINT, APRINT "L", MPRINT, MPRINT "L" 1.9 Punching Data Onto Cards ........... 76 PUNCH, PUNCH "L" 1.10 Use Of Magnetic Tapes 77 BACKSPACE TAPE "L", C'EAD TAPE "L", CREAD TAPE "L" "L", CSET TAPE "L", ENDFILE TAPE "L", READ TAPE "L", READ TAPE "L" "L", REWIND TAPE "L", SET TAPE "L", SKIP TAPE "L", WRITE TAPE "L", WRITE TAPE "L" "L" 2. ARITHMETIC OPERATIONS 80 2.1 Simple Arithmetic (3 Arguments) ........ 80 ADD, DIVIDE, MULTIPLY, RAISE, SUBTRACT 2.2 More Simple Arithmetic .......... 81 ABSOLUTE, CHANGE, SQRT, SQUARE 2.3 Logarithms, Exponentiation ......... 82 ANTILOG, EXPONENTIAL, LOGE, LOGTEN, NEGEXPONENTIAL 2.4 Trigonometric Functions .......... 83 COS, COT, SIN, TAN, COSD, COTD, SIND, TAND, ACOS, ACOT, ASIN, ATAN, ACOSD, ACOTD, ASIND, ATAND, COSH, COTH, SINH, TANH, ACOSH, ACOTH, ASINH, ATANH 2.5 Triple Operations ........... 86 2.6 Data Summarization ........... 89 ACCURACY, FRACTIONAL, INTEGER, ROUND, PARSUM, ROW SUM, SUM, EXPAND, PARPRODUCT, PRODUCT, AVERAGE, MAXIMUM, MINIMUM, RMS 2.7 Complex Arithmetic ........... 95 CADD, CDIVIDE, CMULTIPLY, CPOLAR, CRECTANGULAR, CSUBTRACT 3. DATA MANIPULATION 97 3.1 Defining Operations ........... 97 COUNT, DEFINE, ERASE, RESET, RESET "V" 3.2 Moving Data ............ 99 DEMOTE, DUPLICATE, EXCHANGE, MOVE, PROMOTE 3.3 Manipluative Operations .......... 102 CENSOR, CLOSE UP, FLIP, INSERT, SEPARATE, SHORTEN 3.4 Sorting Data 105 HIERARCHY, ORDER, SORT 3.5 Search Operations ........... 106 MATCH, SEARCH, SELECT 4. STATISTICAL ANALYSIS 110 4.1 Elementary Analysis ........... 110 FREQUENCY, HISTOGRAM, NHISTOGRAM, RANKS 4.2 Analysis Of One Column Of Data .' 115 STATISTICAL, SSTATISTICAL 4.3 Analysis Of Groups Of Data 122 ONEWAY, SONEWAY 4.4 Analysis Of A Two-Way Table 127 TWOWAY, STWOWAY 4.5 Regression ............ 138 FIT, POLYFIT, SFIT, SPOLYFIT 4.6 Correlation ............ 155 CORRELATION, SCORRELATION 4.7 Probability 163 F PROBABILITY, UNIFORM RANDOM 4.8 References For Section 4 ......... 164 5. NUMERICAL ANALYSIS 166 5.1 Special Integrals ........... 166 CERF, ELLIPTICAL FIRST, ELLIPTICAL SECOND, ERROR, STRUVE ONE, STRUVE ZERO 5.2 Polynomials ............ 168 HERMITE, LAGUERRE, LEGENDRE, NORMLAGUERRE , TCHEBYSHEV, UCHEBYSHEV 5.3 Iteration '. 171 I SETUP, ISOLATE, ITERATE 5.4 Analysis ............. 175 HARMONIC, INTERPOLATE, MAXMIN, SOLVE 5.5 Integration ............ 179 GAUSS QUADRATURE 6. REPEAT MODE 180 6.1 Repeated Execution ........... 180 BEGIN, FINISH, PERFORM 6.2 Incrementing Instructions ......... 181 INCREMENT, RESTORE 6.3 Branching, Three Arguments ......... 182 COMPARE, IFEQ, IFNE 6.4 Branching, Two Arguments .......... 184 IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE 7. ARRAY OPERATIONS 186 7.1 Arithmetic 186 AADD, ADIVIDE, AMULTIPLY, ARAISE, ASUBTRACT 7.2 Data Manipulation ........... 191 ADEFINE, AERASE, AMOVE, ATRANSPOSE 7.3 Summarization ............ 193 AAVERAGE, ACOALESCE 7.4 Properties Of An Array 195 APROPERTIES, SAPROPERTIES 7.5 Printing 198 APRINT, APRINT "L" 7.6 Matrix Synonyms ........... 198 8. MATRIX OPERATIONS 199 8.1 Defining Operations ........... 199 MDEFINE, MDIAGONAL, MERASE, MIDENTITY 8.2 Moving Operations ........... 200 MMATVEC, MMOVE, MTRANSPOSE, MVECDIAGONAL, MVECMAT 8.3 Matrix Arithmetic 203 MADD, MKRONECKER, MMULTIPLY, MRAISE, MSCALAR, MSUBTRACT 8.4 Special Matrix Multiplication ......... 206 M(AD), M(AV), M(DA), M(V'A), M(X'X), M(XX'), M(X'AX), M(XAX') 8.5 Matrix Analysis 210 MEIGEN, MINVERT, MORTHO, MTRIANGULARIZE 8.6 Properties ............ 217 MPROPERTIES, SMPROPERTIES 8.7 Printing 222 MPRINT, MPRINT "L" 9. BESSEL FUNCTIONS 224 9.1 First And Second Functions Of Order Zero And One 224 BJONE, BJZERO, BYONE, BYZERO 9.2 Modified Functions ......••••• 225 BIONE, BIZERO, BKONE, BKZERO 9.3 Modified Functions With Extreme Valued Argument 226 EXIONE, EXIZERO, EXKONE, EXKZERO 9.4 Complex Functions; Angle = tt/4 (Kelvin Functions) 227 KBIONE, KBIZERO, KBKONE, KBKZERO 9.5 Complex Functions With Extreme Valued Real Argument (Kelvin Functions). 228 KEXIONE, KEXIZERO, KEXKONE, KEXKZERO 9.6 Complex Functions With Arbitrary Angle, 0<A<Tr/2 228 CIONE, CI ZERO, CKONE, CKZERO 9.7 Complex Functions With Extreme Real Argument 229 CEIONE, CEIZERO, CEKONE, CEKZERO 9.8 Zeros Of Bessel Functions ......... 230 ZEROS BJONE, ZEROS BJZERO 9.9 Bessel Functions Of Order n BESIN, BESJN, BESKN 9.10 Integral .... INTJO 10. THERMODYNAMICS .... 10.1 Temperature Scale Conversion CTOF, FTOC 10.2 System Of Units CGS, SI 10.3 Molecular Weight ATOMIC, MOLWT 10.4 Properties Of State . BOLDISTRIBUTION, EINSTEIN, PARTFUNCTION, PFATOMIC, PFTRANSLATIONAL 11. INDEX OF COMMANDS DESCRIBED IN PART C PART D: LIST OF INSTRUCTIONS (arranged alphabetically) A, Array Operations B C D, E, F G, H, I K, L, M Matrix Operations N, o, P R S T, 'U W, z 231 232 233 233 233 234 234 238 241 243 244 245 246 247 248 249 250 251 252 253 254 PART A BEGINNER'S OMNI TAB The National Bureau of Standards OMNI TAB II computing system is designed to make computing easy, accurate and effective for scientists who are not programmers. OMNITAB is most useful for numerical analysis, data manipulation and statistical analysis. PART A is a compact, simple introduction to OMNITAB for people who have had no experience using a large computer. The material presented can be digested quickly and then the reader will be prepared to use OMNITAB and a computer to perform any set of calculations that can be done using a desk calculator plus a number that can not be done easily with a desk calculator. Only the bare essentials are described and no attempt is made to give a complete description of the OMNITAB system. Complete details are given in the other parts of this manual. PART A stands alone as a self-contained section. The discussion centers around an example. The example was selected because it is interesting and sufficiently non-trivial to be instructive. Thus, we could not avoid introducing technical material which is not germane to the explanation of OMNITAB. The computations are actually simple and the reader can easily gloss over technical expressions such as "cumulative distribution" without impairing his train of thought. 1. An Example 2. Discussion Of Example 3. A Few Simple Rules 4. A Beginning List Of Instructions 5. How To Use OMNITAB II 1. An Example . "It has been noticed by astute observers that well used tables of logarithms are invariably dirtier at the front than at the back. Upon reflection one is led to inquire whether there are more physical constants with low order first significant digits than high." Thus, starts a paper by Pinkham (1961), ("On the distribution of first significant digits." Ann. Math. Statist., 32, 1223-1230). This provides the background for an interesting example to illustrate the basic features of the OMNITAB II computing system. Pinkham gives a theoretical discussion of why and to what extent the cumulative distribution of initial digits compares with the law log(n+l), here log means log to the base ten. By the law logCn+1) and cumulative distribution we simply mean that the digit 1 should occur 100xlog(2) percent of the time, both the digits 1 and 2 should occur 100xlog(3) percent of the time, the digits 1, 2 and 3 should appear 100xlog(4) percent of the time, etc. (The reader should not be distracted by the statistical aspects of this example.) Let us examine the initial digit of the values of the 50 fundamental physical constants given in NBS Handbook 102, pages 42 and 43, (ASTM Metric Practice Guide, U. S. Government Printing Office) and see how well the law log(n+l) behaves. The fundamental physical constants are the Speed of light in vacuum, Faraday constant, Gravitational constant, etc.. The initial digits of the 50 values given in Handbook 102 are: 2, 1, 4, 6, 9, 5, 1, 1, 1, 1, 9, 2, 6, 1, 7, 1, 1, 5, 1, 5, 4, 1, 2, 3, 1, 2, 1, 5, 2, 7, 6, 2, 4, 2, 4. 9, 5, 1, 2, 2, 1, 4, 8, 2, 1, 3, 1, 2, 5, and 6. One thing that we can do with these data is construct a frequency distribution showing the number of times 1 appears as the initial digit, the number of times 2 appears as the initial digit, and so on. We can then compare these observed frequencies with the expected (or theoretical) frequencies. To do this statisticians sometimes compute a statistic called chi- squared from the formula: T = SUM (observed -expected) 2 /expected. Here, the expected individual frequencies are derived from the cumulative relative frequencies by using the relation 50x(log(n+l)-log n) . The simple calculations required to compute T are laid out below in a familar form. It is common practice in laboratories to write down the results of hand calculations on a multi-columned pad of ruled paper, or worksheet, as simulated in the following table. The basic data, in this case, are the observed frequencies in column (2). After this, calculations were performed on successive columns and the results put in columns (3) through (10) . (1) Obs'd n+1 log log diff. exp'd diff. T Freq. (n+D (n) (4) -(5) 50.x(6) (2) -(7) (8)x(8) C9)/(7) (2) (3) (4) (5) (6) (7) (8) 0) (10) 16 2 .3010 .0000 .3010 15.05 0.95 0.902 0.06 11 3 .4771 .3010 .1761 8.80 2.20 4.840 0.55 2 4 .6021 .4771 .1250 6.25 -4.25 18.062 2.89 4 5 5 .6990 .6021 .0969 4.85 0.15 0.022 0.00 5 6 6 .7782 .6990 .0792 3.96 2.04 4.162 1.05 6 4 7 .8451 .7782 .0669 3.35 0.65 0.422 0.13 7 2 8 .9031 .8451 .0580 2.90 -0.90 0.810 0.28 8 1 9 .9542 .9031 .0511 2.56 -1.56 2.434 0.95 9 3 10 1.0000 .9542 .0458 2.29 0.71 0.504 0.22 50 1.0000 50.01 -0.01 6.13 We might expect the initial digits 1, 2, and 3 to appear approximately one third of the time, but the law log(n+l) = log(4) = 0.6, says we should expect them to appear closer to two thirds of the time. Note, the value of T = 6.13 is not at all unusually large thus indicating the law log(n+l) is reasonable in this case. (This is actually a chi-squared goodness-of-fit test which is explained, for example, in "Introduction to Statistical Analysis," W. J. Dixon and F. J. Massey, McGraw-Hill, p 209 ff.) If one were to ask someone to perform the above calculations using a desk calculator, it is possible that the step-by-step instructions would be some verbalization of the headings that appear at the top of the columns. This is pretty much what you do to write a set of instructions in OMNITAB to have the calculations performed by a computer. It is very helpful to imagine a large worksheet consisting of 201 rows by 62 columns. Operations are performed on the numbers in a column by writing instructions which closely resemble English, or at least technical English. The rules that govern the writing of the instructions are fairly simple and permit a wide latitude in form. The most important rule is one which enables the computer to distinguish between column numbers, such as 5, and constants, such as 50.0 in an instruction. All column numbers must be written without a decimal point and all constants must have a decimal point. Imagine for a moment, if you will, writing out a set of step-by-step instructions to perform the above computations and now examine a set of OMNITAB instructions to perform these calculations. OMNITAB 5/19/70 distribution of initial digit of physical contants SET initial digit of physical constants in column 21 2146951111926171151541231 215276242495122148213125 and 6.0 GENERATE n from 1.0 in steps of 1.0 to 9.0, put in column 1 FREQUENCY distribution for column 21, using -9 cells, put obs'd freq in column 2 ADD 1.0 to column 1 and put result in column 3 LOGTEN of column 3, put in column 4 LOGTEN 1, 5 SUBTRACT column 5 from column 4 and put in column 6 MULTIPLY column 6 by 50.0 and put expected frequencies in colomn 7 SUBTRACT col 7 from col 2 and put differences in col 8 SQUARE column 8 and put in column 9 DIVIDE column 9 by column 7, put in column 10 SUM column 10 and put chi-squared in column 11 PLOT relative cumulative frequencies in column 5 against n in column 1 PRINT columns 1, 2, 7, 8, 10 and 11 STOP The results obtained by using this set of instructions are shown on pages 4 and 5. The OMNrTAB results differ in a few respects from the hand-calculated results above. The frequency distribution was computed, a plot of the theoretical, cumulative distribution is given and the amount of information printed is slightly different. Now, let us examine the set of instructions in some detail. 2. Discusssion Of Example . Each instruction must be punched on a single Hollerith data processing card which has 80 columns. The first word of each instruction must be one of the valid command names in the OMNITAB vocabulary. To emphasize this point, the command name is written in capital letters. On the remaining portion of the card, only the numbers are important and required. The words in lower case letters are descriptive words which help the user understand the meaning of the instruction, but are ignored by the computer for computing purposes. (On a punched Hollerith card, only capital letters are possible.) Each instruction is interpreted and executed by the computer as it is encountered. Let us examine the instructions one by one in some detail. I s F-H o o o o o o o o o ■=3- ■=)■ ^ ** *3- ■* ^i- ^r m- I-l tO tO tO to tO to to to to H ^H .-H .-1 rH CO COCOOO CO CO CO CO CO CO s CN] CN] CNl CN) CN] cni cni cni cn) o tH 1— ( T— 1 I— I 1— 1 i— 1 i— 1 i— 1 rH cj o \o \o \o ^o \o ^o\o \0 3 CJ cj 1—1 CO i— 1 *d- tO LO LO CD B-. >OHLn cni o O i— 1 LO CO C HNO *0 ^i- lo ai to vo r-- to lo CN] CNJ LO Ol i— | LO H t-- ^f CNl Ol t-H CN) O \D *0 Ol t^ t-^ *tf CM t-- Ol CO i— 1 cj LO ^i- CO O LO CM r~~- *3" CNJ Q o c_> O LO CO o o I— 1 CN] Ol CN] CNl l-H 3 H to LO LO CD tO l-H CO NO CN] t^ NO to LO CN] o O 2 o r~- \o oi r-~ CD t-N- \0 LO >— < o to to oi to vO Ol CN] CN] lo -* oi ■si- oi OflvDH Wh CO LO <0 ■* o CN) CJl [^ CNl o ^f Ol ^1- LO «=f LO Ol LO i— 1 § ^. Ol t-H CN] tH o o co lo r-^ J CN] ^J- cn) 1 i-H )— H O 1 S U CQ l-H g 00 t~~ to r-^ LO CN] O ^ i>- oi cni \o O CN] oi r-- o *s- CO a ^ to CD yD KIOIMIN ^■LOOl LO O to LO O CO Q H^no lo ai r~- oi r-~ r^ L^C^t^-l/1 Nt cn t/i co g OCON co oi tO CO LO CN) o g LO CO vO ^j- to tO CNl CN) CN) t-- 3 rH - — o oi u LO O o o o o o o CN] o o o o o o o o o o o o o o O O O CD £> CD O O O CD CD O CD CD s O CD CD CD O O O O O E-i O O CD O O CD O CD CD i—i ■z 1 O CD O CD O O O CD O ^ \0 *— 1 CN] LO VO "* CN] ,— 1 tO s .-J i—l i— 1 o u CD O O o o O CD CD O 1—1 O CD CD o o O CD O O O CD O CD O CD CD CD O O CD O o o O O CD O CD CD O o o CD O CD CD O O O c o oooo 2 O CD O o o CD CD CD CD -1 o *— 1 CN] to -* LO oiNcoai CJ H l-H CJ M o co Q w o i Q CJ H„h5:ci, > S O i-| o HSJtfh a co a, cx co OMNITAB is the first instruction of any set. The date and other information on the card serves as a title which appears at the top of each page that is printed, along with the page number, as shown on pages 4 and 5. The OMNITAB instruction does a certain amount of initialization; in particular, it sets every entry in the 201 x 62 worksheet equal to zero. SET is one of the instructions to get (enter) data into the worksheet. All the data that follow are read into the designated column of the worksheet until an OMNITAB instruction is encountered. The number 2 goes into row 1 of column 21, the number 1 into row 2, 4 into row 3, etc., and finally 6 into row SO. Note, we have not indicated anywhere that 50 numbers have to be entered. The computer automatically determines the number 50 for us. Considerable freedom is allowed in punching the numbers on a card. At the end of the second data card 6.0 is written, whereas all the other numbers do not have a decimal point. It is obvious when you read this sentence that 6 and 6.0 represent the same quantity and so they do when data are entered by OMNITAB. The user is free to put the decimal point in a data value or leave it out. Any words, that are not part of the OMNITAB vocabulary, can be entered anywhere on the card as comments, e.g. the word "and" at the end of the second data card. Also, data may start and appear anywhere on the card. All that is required is a comma, space or word to separate the numbers. One of the instructions for entering data, such as SET, must be used before any arithmetic is done. GENERATE is another of the instructions for getting data into the worksheet (computer) . The first number, 1.0, goes into row 1 and each succeeding row is obtained by adding the increment, the second 1.0, to the preceding row. The process is continued until the final value is reached, the third number 9.0 Thus, we obtain the numbers 1.0, 2.0 ... 9.0 in the first nine rows of column 1. In contrast to SET, the constants in this instruction must be written with a decimal point. Some people use the mathematical notation with parentheses as in GENERATE 1.(1. )9. in column 1 FREQUENCY creates a frequency distribution using the specified number of cells or classes. This instruction produces the numbers in column (2) of the hand- calculated table of section 1. It gives the number of times (frequency) the digit 1 appears, the number of times the digit 2 appears and so on. ADD is one of the arithmetic instructions. The first two numbers can be either constants (1.0) or column numbers which do not contain a decimal point (1). Note, ADD does not start in the first column of the card. Any instruction can appear anywhere on the card as long as one and only one instruction is on the card. Two cards can not be used for a single instruction. Of course, the instruction is equivalent to ADD column 1 to 1.0 and put result in column 3 LOGTEN is another arithmetic instruction. Note, the difference in the two LOGTEN instructions. The words are superfluous, except for ease of reading and the first instruction could be written LOGTEN 3,4. Although the latter form is less desirable, the flexibility permits a great deal of freedom in writing an instruction. SUBTRACT is clear. Notice the word "from" in the instruction which, although not necessary, explains the structure of the instruction. The instruction SUBTRACT 4.0 from 7.0 put in columnn 56 would put the number 3.0 into each row of column 56. MULTIPLY as punched on the cards listed on page 5 has the word column misspelled, but this will not affect the execution of the instruction. The command name MULTIPLY must be spelled correctly, but since the words which follow are ignored and are not nece-ary, misspellings, although not encouraged, are allowed. SUBTRACT uses the abbreviation col for column which is very common with OMNITAB users. SQUARE is another arithmetic instruction whose meaning is clear. The results in column 8 are needed to obtain column 9, but are of no intrinsic interest. Thus, they can be destroyed and we could have used the instruction SQUARE 8, 8. The last number in any instruction is always a column number indicating where the results are to be put in the worksheet after computations are completed. The results are put in the designated column and at the same time the previous numbers are erased, but not before the calculations are complete. The instruction ADD 1,1,1 is valid and would replace the numbers in column 1 by numbers having twice their value. DIVIDE one column by another column means perform division row by row. In this case, divide the number in row 1 of column 9 by the number in row 1 of column 7 and put the result in row 1 of column 10; divide the number in row 2 of column 9 by the number in row 2 of column 7 and put the result in row 2 of column 10; and so on. SUM is one of several data summarization commands. The result 6.13 is put in each row of column 11. Some people are puzzled to learn that the same number is put in each row. But OMNITAB works on columns of numbers and it would be more confusing to have different rules when the result of an operation is a single number rather than a column of numbers . PLOT provides a convenient graphical display of the data via the printer. The scales along the axes of the plot are automatically determined by the computer. PRINT is the basic instruction for obtaining printed results from the computer. Notice that the numbers are printed in a readable form with the decimal points lined up. This is a unique feature of OMNITAB which makes reading of results easy. The position of the decimal point is automatically determined by the magnitudes of the numbers in a column. Printing starts on a new page and at the top of each column appears the heading COLUMN with the appropriate column number. STOP is always the last instruction. It tells the computer that you have finished using the OMNITAB system. At the same time it causes a LIST OF COMMANDS, DATA AND DIAGNOSTICS to be printed for reference purposes. 5. A Few Simple Rules . (1) One and only one instruction is punched on a single Hollerith card. (2) The first word of any instruction must be a valid command name in the OMNITAB vocabulary. (3) Column numbers must be written (punched) without a decimal point. (4) Constants which are part of an instruction must have a decimal point. (The decimal point is not necessary in data that are read into the worksheet.) (5) OMNITAB must be the first instruction. (6) STOP must be the last instruction. (7) Any data value less than -8191 must have a decimal point, e.g. -9328 must be punched as -9328.0. 4. A Beginning List Of Instructions . Each OMNITAB instruction consists of (i) a valid command name in the vocabulary such as ADD which is usually an imperative verb, (ii) one or more arguments, or numbers, which indicate the specific data to be operated on, e.g. the numbers 1.0, 2 and 3 in ADD 1.0,2,3 and (iii) descriptive words or phrases for the user's benefit as in ADD the number 1.0 to column 2 and put the results in column 3. The last two, (ii) and (iii), are not always present as in STOP. The number of arguments allowed varies from instruction to instruction and depends on the form of the instruction. In the list below, the meaning or type of argument allowed should be clear from the context, but to remove any doubt four conventions are used: (C) = a COLUMN number which must not have a decimal point (K) = a CONSTANT which must contain a decimal point (E) = EITHER a column number or a constant (k) = an integer, other than a column number, without a decimal point. SET the data on the following card(s) into column (C) READ data into columns (C) , (C) , ... (C) one card per row GENERATE from (K) , in steps of (K) , to (K) in column (C) ADD (E) to (E) and put the results in column (C) SUBTRACT (E) from (E) and put the results in column (C) MULTIPLY (E) by (E) and put the results in column (C) DIVIDE (E) by (E) and put the results in column (C) SQUARE of (E) put in column (C) SQRT of (E) , put square root in column (C) ABSOLUTE value of (E) , put in column (C) RAISE (E) to the (E) power and put results in column (C) LOGTEN of (E) , put in column (C) the logarithm to base ten ANTILOG of (E) put in column (C) LOGE of (E) , put in column (C) natural logarithm EXPONENTIAL of (E) put in column (C) SIN of (E) radians put in column (C) COS of (E) radians in column (C) SUM all the values in column (C) , put result in column (C) AVERAGE the values in column (C) , put result in column (C) MAXIMUM value of column (C) , put in column (C) MINIMUM value of column (C) , put in column (C) DEFINE (E) into column (C) SORT column (C) , carry along columns (C) , (C) , ... (C) FREQUENCY distribution for column (C), using (k) cells, put in column (C) STATISTICAL analysis of column (C) PLOT column (C) using vertical scale against column (C) using horizontal scale PRINT columns (C) , (C) , ... (C) OMNITAB (this must be the first instruction) STOP (this must be the last instruction) 5. How To Use OMNITAB II. A list of instructions and a list of rules has been given with a discussion of how to use them. A few additional comments about the use of instructions are now needed. The READ instruction is similar to the SET instruction except data is entered into several columns one row at a time. The data on the first card goes into row 1 of the designated columns, the data on the second card into the second row and so on. For the READ instruction you punch one card for each row of data, whereas for the SET instruction you keep punching on a card and use only as many cards as you need to punch all the data for a single column. The instruction STATISTICAL analysis is one of several instructions which give an automatic printing of a comprehensive set of results. This particular instruction prints a frequency distribution; 43 different statistics on measures of location, measures of dispersion, confidence intervals, linear trend statistics, tests for non- randomness, deviations from mean and other statistics; and the data with ranks, deviations from the mean and differences between adjacent ordered observations. An example is given in PART C. The instruction DEFINE can be used to put a single value into every row as in DEFINE 2.0 into column 3, or it can be used to move a column from one part of the worksheet to another as in DEFINE column 2 into column 3. The instruction SORT puts data in increasing order and at the same time carries along data from the other columns which are specified. If the baseball batting averages .285, .310, .239, .268 and .293 are in column 36 and the number of walks 18, 26, 5, 3 and 12 are in column 38, then the instruction SORT column 36 and carry along column 38 would change the numbers in column 36 to .239, .268, .285, .293 and .310. The numbers in column 38 would be changed to 5, 3, 18, 12 and 26. The user may make errors, but they usually can be easily spotted and corrected. If a command name is not spelled correctly or has the wrong number or type of arguments, a FATAL ERROR will result and the instructions which follow are not executed. A message indicating the type of error is given in the LIST OF COMMANDS, DATA AND DIAGNOSTICS which is printed after the execution of the last instruction. Sometimes arithmetic errors occur as in attempting to take the square root of a negative number. This results in a diagnostic also, but does not affect the execution of subsequent instructions. A complete list of possible errors is given in PART B. In addition to the OMNITAB control cards OMNITAB and STOP, a few control cards are necessary for accounting and administrative purposes. These cards differ from one computer center to another. Specific details should be obtained from your computer center. MBS users can find the necessary information in PART B. Information on how to punch cards, send cards to the computer to be run and receive printed results should also be obtained from your computer center. The material provided in this part of the manual will enable you to solve a number of different problems easily and quickly. However, we have only scratched the surface of what can be done using OMNITAB. After using OMNITAB for awhile the beginning user will have many questions. — Are there other ways of printing data? — Can I modify the printing to have titles, column headings, etc.? — Can I choose the scales of a PLOT? — Can I work with matrices rather than columns? — Can I invert a matrix? — Can I do any numerical analysis such as interpolation? — Can I do more sophisticated statistical analysis using least squares? — Can I handle more than 201 ^i r a values? The answer to each of these questions is "Yes, in several different ways." The answers are given in the remainder of the manual. The beginner should not be overwhelmed, but should proceed at his or her own pace. Examine the table of contents and glance through the complete LIST OF INSTRUCTIONS (PART D) at the end of this manual. In particular, study carefully the section on self-teaching. Then proceed to learn the material as needed and don't try to read it all at once. PART A stands alone as a self-contained section. PART B THE OMNITAB II COMPUTING SYSTEM A general description of the National Bureau of Standards OMNITAB II computing system is given with illustrations. General features are described. Details on specific instructions are given in PART C. 1. How To Use OMNITAB II 2. Repeated Use Of Commands 3. Diagnostic Features And Accuracy 4. For More Effective Use Of OMNITAB II 5. The OMNITAB II Project 11 1. HOW TO USE CMNITAB II 1.1 Introduction CMNITAB is a highly user-oriented general -purpose computing system. It is especially suited to problem solving in areas of data analysis, data manipulation, statistical analysis and numerical analysis. The name CMNITAB comes from omni and tab . The former because it is one in a series of omnibus programs and the latter because it can handle a wide variety of tabular data; see Hilsenrath et al. (1966). The central theme behind CMNITAB is that considerable extra effort should be expended by specialists in writing the master program so that users have only to exert a minimum amount of effort to use the computer easily and effectively. Every effort is made to utilize the computer to free the user from annoying, tiresome chores and to enable him or her to do the type of problem solving and data interpretation that is normally required in the chosen field. A major consequence of this theme is that computing is done in a natural way by writing instructions to the computer in simple English sentences or abbreviations thereof. The simplicity of the system makes a more direct and immediate access to the computer possible for both non-programmers as well as experienced programmers. It is very helpful to imagine a large worksheet consisting of 201 rows and 62 columns. Operations are performed on the numbers in columns by writing a series of instructions which closely resemble English or at least technical English sentences. Each instruction is punched on a single Hollerith card which lias 80 columns. Each instruction is executed (except as in section 2) as it is encountered and interpreted by the computer. Hence, the order of the instructions controls the flow of computations in much the same way that hand calculations are performed and recorded on a multi-columnar pad. The instruction MULTIPLY column 3 by 6.2 and put the result in column 5 causes the numbers in each row of column 3 to be multiplied by 6.2 and the results to be placed in the corresponding rows of column 5. The numbers which were in column 5 are replaced by the new results (only) after the operation is complete. Complete details on the writing and general use of instructions are given in the following sections. In PART A a simple compact introduction to CMNITAB was given for the novice. In some instances there was a slight over-simplification. In the remaining portions of this manual details are given for both the novice and the experienced user. Some of the points made in PART A will be slightly modified to make them agree with the actual characteristics. It is assumed that the reader is familiar with the material in PART A. 1.2 Conventions, Definitions . An CMNITAB instruction is the information punched on a single Hollerith card as in: ADD 1.0 to column 24 and put the result in column 37 $ Y=X+1 For clarity of exposition, an instruction is said to consist of one or more of the following: 12 (a) The command: ADD (b) Arguments: 1.0, 24 and 37 (c) Descriptive words: to column, and put the result in column (d) Comments: $ Y=X+1 Formerly, the terms command and instruction were used interchangeably, but here the above distinction is made. The command must be a valid name in the OMNITAB vocabulary; see PART D for a complete list. If the command is misspelled or is in any way incorrect the following FATAL ERROR will occur NAME NOT FOUND IN LIBRARY A complete discussion of error messages is given in section 3. All commands, except those listed in sections 1.11 and 1.16 consist of a single word. If the name has more than six letters, only the first six are necessary. For example, the command STATISTICAL analysis is often abbreviated to STAT IS The word "analysis" is not part of the command, but may be used to clarify the meaning of the command. Arguments are numbers which are either constants, row numbers, column numbers, etc. which indicate what specific numbers the operation (ADD) is to work on. Arguments must be separated from each other. This can be done by either (a) using one or more blank spaces, (b) using a comma or (c) using a descriptive word or phrase. The descriptive words are helpful for understanding the meaning of the instruction, but are not used by the computer except in the printing of the LIST OF COMMANDS, DATA AND DIAGNOSTICS which is given at the end of the execution of a set of instructions . The use of comments is discussed in section 1.5. Instructions are of three types: executable, non- executable and stored. Executable instructions are those which perform some type of operation immediately as in ADD. Non- executable instructions are used in detailed printing, for example FORMAT. The use of stored instructions for repeated execution is discussed in section 2 . In addition to instructions, the two other types of punched cards used with OMNITAB are data cards and operating system control cards. The operating system control cards are described in section 1.4. Throughout this manual commands are written in capital letters. Non-essential descriptive words in an instruction are written in lowercase letters. No numerals are used in a command except in TITLE1, TITLE2, TITLE3, TITLE4, NOTE1 and N0TE2. Some commands have a qualifier denoted by "L", where "L" indicates any one of the letters A, B, C, D, E or F; see section 1.16. These qualifiers are used to distinguish between formats and tapes (except in DUMMY "L") ; see section 4.4. The qualifier (without quotation marks) is part of the command. One blank space must precede and follow the qualifier without any additional characters. All of the magnetic tape operation commands have either one or two qualifiers. One instruction, RESET "V", has the qualifier "V", where "V" denotes the letter V, W, X, Y or Z; see section 1.7. Parentheses enclosing a letter indicate the type of argument allowed in an instruction. Lower case letters always represent integers which must be written without a decimal point. Examples are (r) = the number of rows and (c) = the number of columns. Capital letters are used as follows: 13 (C) = a COLUMN number which must be written without a decimal point (E) = EITHER a column number or a constant (K) = a constant which must be written with a decimal point (N) = an instruction NUMBER with or without a decimal point (R) = a ROW number which must be written without a decimal point Constants can be written in many different ways. The number 123.4 can be written simply as 123.4 or it can be written using some kind of notation indicating the size of the exponent as in 1.234E+2, 1.234E2 or even 1.234+2. In some instructions, like PRINT, it is clear from the context that the arguments must be column numbers. In some instructions, like ADD, the form of the instruction indicates that either constants or column numbers may be used as arguments. To make the distinction between constants and column numbers unambiguous, constants are always written with a decimal point and column numbers are always written as integers without a decimal point. The word OMNITAB is used for several different purposes and some ambiguity may result. Also, there has been some discussion and comment on whether OMNITAB is a program, a language or even a statistical package. To alleviate these difficulties, the following definitions will be used: O MNITAB master program : The entire set of ANSI FORTRAN subprograms which exists on magnetic tape or punched cards . OMNITAB language : The vocabulary of imperative words and the grammar, syntax and rules for its use. OMNITAB vocabulary : The list of commands, largely imperative verbs, which comprise the first word of an OMNITAB instruction. OMNITAB instruction : The combination of a command from the vocabulary, numerical constants and column numbers, with or without intervening "noise" words. OMNITAB set of instructions : A set of instructions beginning with the command OMNITAB, including data cards, written by a user to solve a specific problem. OMNITAB philosophy : The strong user-oriented features of OMNITAB such as automatic printing and printing of error bounds, without which OMNITAB could exist, but would be substantially less effective. OMNITAB project : The continuing activity designed to make the use of OMNITAB more effective. These activities include maintenance of the system, programming of new features, operation of a feedback system from users, distribution of program tapes, preparation of the OMNITAB Newsletter, and planning and coordination of workshops, seminars and lectures. The word OMNITAB by itself may signify any of the above, but usually refers to the OMNITAB computing system which encompasses all of the above. 1.3 A Few Simple Rules . A few restrictions are imposed upon the user by the rules below. However, the user is allowed wide latitude in writing instructions or data cards. For example: (a) Any instruction can appear anywhere on the card. Punching does not have to start in card column 1. 14 (b) Data can be spaced in any way on a card and descriptive words or phrases (without numerals) may appear anywhere on the card. If a descriptive word is used at the beginning of a data card, it must not be a valid name in the OMNITAB vocabulary. (c) The extent to which descriptive words are or are not used in an instruction is up to the user. Liberal use of descriptive words is often helpful. (d) When the last argument in an instruction is a column number, as is usually the case, indicating where results are stored, the column number does not have to differ from column numbers previously used in the instruction. E.g., SQUARE 8,8 is a valid instruction and would replace all the numbers in column 8 by the same numbers squared. (e) The length of a column is usually automatically set when data are entered into the worksheet and need be of no concern to the user. For a few exceptions see section 1.6. (f) The master program automatically makes the distinction between data and instructions. (g) FORMAT statements are not required. They may be used, if desired. The following is a short list of simple rules which apply in general. Rules which apply only to a single instruction are given with the description of the instruction in PART C. (1) One and only one instruction is punched on a single Hollerith card. (2) The first word of any instruction must be a valid command in the OMNITAB vocabulary. (3) Column numbers must be written (punched) without a decimal point. (4) Constants which are part of an instruction must have a decimal point. (The decimal point is not necessary in data that are read into the worksheet.) (5) OMNITAB must be the first instruction in any set of instructions. (6) STOP must be the last instruction. (7) The maximum number of arguments allowed in a single instruction is 100. (8) Arguments must be separated from each other by a blank space, comma, or any character other than an asterisk or a dollar sign. (9) All matrix and array operation commands, except AAVERAGE, ACOALESCE and MMATVEC, use the first four arguments to determine the location and size of the array or matrix. (10) The use of asterisks, see section 1.8, is governed by special rules. In particular, a space cannot be used for a conrna to separate numbers between asterisks. An asterisk should not be used in a descriptive word or phrase. (11) The first instruction following a data card must not be a stored instruction. (12) Any data value less than -8191 must have a decimal point, e.g., -9328 must be punched as -9328.0. 15 (13) Data must be within the range of the computer. For NBS users this means approximately 11 digits or less for integers (2 35 -l) and floating-point numbers should be less than 10 38 . 1.4 NBS Operating System Control Cards . OMNITAB has two essential control commands OMNITAB and STOP, which are discussed in PART C. In addition, control cards are required by the computer center for administrative and accounting purposes. Users of any computer other than the NBS computer should consult their computer center staff for assistance. Users of the NBS computer have to use the following three control cards. The symbol, 8, represents the multiple 7-8 control punch which must be in card column 1. 8P RUN NAMEXX,00000,MT,MP,MC 80 XQT (ZMNITAB (your set(s) of OMNITAB instructions) 8 FIN On the first card: P = Priority which is either the letter A, B, C or D as you choose. The priority affects (i) the computing cost, (ii) how quickly your sets of instructions will be processed and (iii) sets limits on the execution time, number of pages that can be printed, number of cards that can be punched and number of magnetic tapes that can be used. (If a blank space appears, D priority is assumed.) 00000 = the five digit task number assigned to you by the Computer Services Division. NAMEXX = the six character identification assigned to you by the Computer Services Division. MT = the maximum number of minutes of computing time expected. MP = the maximum number of pages to be printed. MC = the maximum number of cards to be punched. If the priority, name or task number is incorrect, your computer run (set of instructions) will be aborted. In other words, the computer will not accept your set of instructions to be processed. Similarly, if there is a conflict between the priority and either MT, MP or MC, then the run will be aborted. If MT, MP or MC is reached, your computing, printing or punching will all cease and you will only get back whatever has been produced up to this point. Usually, 1 or 2 is used for MT. A great deal of computing can be done in 1 minute. Occasionally several minutes are needed, particularly if several sets of instructions are being used or if an iterative procedure is being used. The computing time almost never exceeds 10 minutes. The run time can now be given to the nearest tenth of a minute. Hence, the following are all acceptable times: 0.6, 1, and 2.. The number of pages printed is often less than 50 and rarely greater than 100. Keep in mind that about five extra pages are printed by the executive system for administrative purposes. Usually cards are not punched and MC can be left blank. However, when you do have cards to be punched, be sure to set MC to equal or exceed the number of cards that have to be punched . 16 The priority establishes limits on MT, MP, and MC as follows: PRIORITY MAXIMUM TIME MAXIMUM PAGES MAXIMUM CARDS MAXIMUM TAPES A 2 min. 75 B 5 min. 125 500 3 C 10 min. 175 500 5 D unlimited 2500 20,000 7 A slash is used to distinguish the letter, 0, from the number zero. If the letter, 0, in the second card column of the second system control card is missing, overflow and underflow diagnostics will be printed by the executive system. These messages are sometimes informative, but are usually difficult to relate to CMNITAB. In addition to the above system control cards, the user must precede all cards by a completed FORM NBS-112, Computer Services Instruction Card. An example of a completed form (with fictitious data) follows. This white card immediately precedes the "RUN" card. REEL NO mm?#\ NUMBER SCRATCH TAPES NEEDED [] TPR OUTPUT fj PRINT & RELEASE fJPRINT a SAVE REEL izo not white _lJM4M MAX. RUN TIME / MIN. MAX. PRINT OUT So _ PAGES MAX. CARDS OUT _ CARDS 7/JO/70 □ PICKUP 2*9 FLOOR f_~J MAIL TO: SPECIAL INSTRUCTIONS X PICKUP 3™ FLOOR OPERATOR COMMENTS U.S. bEPSRIMCNT OF COMMF.RCE NATIONAL 11UREAU OF STANO'RDS COMPUTER SERVICES INSTRUCTION CARD "~l 1.5 Numbers In Comments . Explanatory words or phrases are always allowed in an instruction, i.e., SQUARE 1,2 can be written as SQUARE column 1 and put the results in column 2 If numbers are used in comments, additional steps must be taken to avoid having the numbers mistaken for arguments. A number in a comment should always be at the end of the instruction and follow the last argument. If there are only a few such numbers, the simplest procedure is to precede the comment by a dollar sign, $, as in: ADD 1.0 to column 24 and put in column 37 $ Y=X+1 17 The dollar sign is a signal to the computer to ignore all information which follows it. The dollar sign can be used to make an entire card a comment card by putting the dollar sign first, usually in the first card column, as in: $ the following group of instructions computes the geometric mean. If numbers in comments occur in many cards, a simpler procedure is to use the instruction SCAN. (See PART C.) The instruction SCAN only the first (c) card columns on the following cards instructs the computer to ignore all information on any card that follows beyond the c-th. column. 1.6 NRMAX NRMAX stands for maximum number of rows. It is the number of rows operated upon by an instruction. It is not the number of rows in the worksheet. Usually the user need have no concern about NRMAX. Its value is usually automatically set by one of the instructions for entering data into the worksheet (READ, SET, GENERATE). In the instructions: CMNITAB GENERATE 1.(1. )5. in column 1 ADD 1. to column 1 and put in column 2 PRINT columns 1 and 2 STOP the command CMNITAB automatically sets the number of rows in the worksheet equal to 201 and NRMAX equal to zero. The command GENERATE automatically sets NRMAX to equal 5. Hence, when the ADD instruction is executed, only the first five rows are operated on. The numbers 2., 3., 4., 5., and 6. will be put in the first five rows of column 2 and the remaining rows will have the value zero which was set by the command CMNITAB. The value of NRMAX may be changed, but not necessarily, only by the following instructions : Increase NRMAX Decrease NRMAX Either Increase or Decrease NRMAX DEMOTE ERASE (with no arguments) ISOLATE DUPLICATE FREQUENCY (usually) I SETUP GAUSS QUADRATURE CMNITAB (NRMAX=0) ITERATE GENERATE SHORTEN RESET nrmax INSERT READ SET CSET TAPE "L" READ "L" READ TAPE "L" READ TAPE "L","L" SET TAPE "L" 1.7 Variables V, W, X, Y and Z. If a constant, such as 3.7, is to be used repeatedly, it is sometimes convenient to give it a name. This is particularly true if the constant is used often in a set of instructions, but the value of the constant is changed when the set of instructions is used on different days. Then the value of the constant has to be changed in only one place rather than many different places. Five variables are available for this purpose; V, W, X, Y and Z. The value of a variable is set by using the instruction 18 RESET "V" where the qualifier "V" can be either V, W, X, Y or Z. For example, we could use RESET W to 3.7 When a variable is referenced in an instruction, it must be enclosed by asterisks; see section 1.8. The instruction ADD the value *W* to column 2 and put in column 3 adds 3.7 to each value in column 2 and puts the results in the corresponding rows of column 3. If more than 5 constants are needed one can put all the constants in a column and then use asterisks as described in section 1.8. Actually, the decimal point is not necessary as the instruction implies that the number after the qualifier has to be a constant, i.e., RESET X to 12 is automatically converted to RESET X to 12.0. 1.8 Use Of Asterisks . (a) Three asterisks can be used to designate an implied "through". In PRINT 1 *** 8 the three asterisks indicate that we want to use all the integers between 1 and 8. This is merely a shorthand way of writing PRINT 1,2,3,4,5,6,7,8. The numbers on either side of the three asterisks must always be integers. The three asterisks must not be separated. They must not be used to mean "thru" when "thru" is implied by the instruction as in the instructions PERFORM, ROW SUM, and SUM. The number on the left of the three asterisks should be less than or equal to the the number on the right, i.e., PRINT 8 *** 1 should not be used. (b) Single asterisks enable you to use a number in a particular part of the worksheet without actually knowing its specific value. The instruction ADD value *2,3* to column 17 and put in column 35 adds the number which is in row 2 of column 3 to every number in column 17 and puts the results in column 35. The argument defined by a pair of single asterisks must be defined by the following, no more and no less: (i) an asterisk, (ii) (R) = row number, (iii) a comma, (iv) (C) = a column number, and (v) an asterisk. No additional commas, spaces or any other characters may be used. (c) Double asterisks are used in much the same way that single asterisks are used, except the argument defined is an integer rather than a constant. If the number in the worksheet is not an exact integer, it is truncated to an integer for use in the instruction. For example, if the number 3.7654289 is in row 7 of column 8, then the instruction ADD column **7,8** to column 16 and put in column 17 would add the numbers in column 3 to the numbers in column 16 and put the results in column 17. The number 3.7654289 is truncated to 3 for defining the argument in this instruction, but the number in row 7 of column 8 in the worksheet is unchanged. NRMAX and the variables V, W, X, Y and Z may be referenced using either single or double asterisks . 19 1.9 The Size Of The Worksheet . The instruction QMNITAB automatically sets the size of the worksheet to be 201 rows by 62 columns. This shape is not always the most desirable. At times all one needs is a simple analysis of several hundred measurements. At other times one needs to perform many computations for a small set of data. In these situations the shape of the worksheet can be easily changed by using the instruction DIMENSION the worksheet to be (r) rows by (c) columns The integers (arguments) (r) and (c) can have any positive value as long as the product does not exceed 12,500. When DIMENSION is used, it should immediately follow the OMNITAB instruction or at least precede any executable instruction. It should not be placed in the middle of a set of instructions. 1.10 Automatic Printing . Several instructions for statistical analysis automatically produce the printing of a comprehensive set of results. In contrast to other statistical programs, the user is not asked to choose between many different options. He gets everything that the instruction produces. Invariably, the exercise of an option implies an a priori judgement of the data which the OMNITAB user is spared. Considerable thought was given to the method of presenting results and to the selection of items to be printed. An effort was made to give non-statisticians, in particular, enough information to use their results thoughtfully. For example, the FIT instruction prints and plots the standardized residuals to enable the user to assess the adequacy of his statistical model. Careful use of the printed results can be educational . The instructions which have automatic printing are: STATISTICAL analysis CORRELATION FIT POLYFIT ONEWAY TWOWAY APROPERTIES MPROPERTIES Each of these instructions can also be used to store results in the worksheet. The same command preceded by an S, as in SFIT, suppresses the automatic printing and gives only the stored results. The use of S to suppress the automatic printing can be useful if a few of the many results are desired on several sets of data, rather that the full set of results for a single set of data. 1.11 Two -word Commands . Most instructions have a single command, e.g., MULTIPLY. Some instructions may seem to have two words in the command, as in STATISTICAL analysis, but the second word is used only for clarification and can be omitted. The following commands have two words separated by at least one space. Both words must be used. Except, the command ROWSUM is allowed as a synonym for the command ROW SUM. The magnetic tape operation commands described in section CI. 10 are not listed here. NO LIST ELLIPTICAL FIRST CLOSE UP ELLIPTICAL SECOND NEW PAGE ZEROS BJZERO ROW SUM ZEROS BJONE F PROBABILITY STRUVE ZERO PAGE PLOT STRUVE ONE GAUSS QUADRATURE UNIFORM RANDOM PRINT NOTE 20 If a phrase normally occurs as two words in the English language, e.g. new page, then the OMNITAB command usually has two words, e.g., NEW PAGE. This is not always true in technical expressions, as in NORMLAGUERRE . 1.12 Abbreviations . Abbreviations are allowed for some of the more commonly used commands. For reference, a complete list is given here. All the commands on the right are array or matrix operation commands . FULL COMMAND ABBREVIATION SUBTRACT SUB MULTIPLY MULT DIVIDE DIV ABSOLUTE ABS EXPONENTIAL EXP LOGE LOG MAXIMUM MAX MINIMUM MIN DIMENSION DIM FULL COMMAND ABBREVIATION ASUBTRACT ASUB AMULTIPLY AMULT ADIVIDE ADIV MSUBTRACT MSUB MMULTIPLY MMULT Caution: abbreviations are not allowed for the instructions to perform complex arithmetic. E.g., CDIV cannot be used as an abbreviation for CDIVIDE. Only the above abbreviations are allowed. 1.13 Synonyms . Certain commands have synonyms, particularly if an instruction can be used in more than one context. For example, an array can also be thought of as a matrix. A complete list is given below. COMMAND SYNONYM (S) PERFORM ORDER MAXMIN MOVE INVERT AADD ASUBTRACT AERASE ATRANSPOSE ADEFINE APRINT "L" The list does not include commands where a synonymous with another instruction, as REPEAT, EXECUTE SORT (C) , only one argument EXTREMA AMOVE, MMOVE MINVERT MADD MSUBTRACT MERASE, AZERO, MZERO MTRANSPOSE MDEFINE MPRINT "L" special case of one instruction may be is equivalent to MULTIPLY 1, 1, 2 SQUARE 1, 2 1.14 Named Constants . Two mathematical constants which occur frequently in scientific work can be referenced using asterisks without actually writing the number explicitly. The constants are, PI = 3.1415927, the ratio of the circumference of a circle to its diameter and, E = 2.7182818, the base of the natural system of logarithms. The instructions 21 MULTIPLY *PI* by 0.5 and put in column 2 SQUARE of *E* put in column 3 would put 1.5707963 and 7.3890561 into columns 2 and 3. A single asterisk is used directly on each side of the symbol. No character should be used between the asterisks other than the named constant (PI or E) . Similarly, 18 fundamental physical constants can be used by enclosing the appropriate symbol in asterisks. The value of a constant depends upon the system of units in use. The instruction CMNITAB initially sets the value of the constants in SI (Systeme Internationale) units (metric system) . The system of units is easily changed by using either of the instructions (with no arguments) CGS (centimeter-gram-second) or SI (Systeme Internationale) The CMNITAB symbol, the name arid the current value in both SI and CGS units are for each constant in the following table. SI units were formerly called MKSA units. Value given CMNITAB Physical Constant SI Units CGS Units ALPHA Fine structure constant 7.29720E-3 7.29720E-3 C Speed of light in vacuum 2.997925E+8 2.997925E+10 CONE First radiation constant 3.7415E-16 3.7415E-5 CTWO Second radiation constant 1.43879E-2 1.43879 F Faraday constant 9.64870E+4 9648.70 G Gravitational constant 6.670E-11 6.o70E-8 GAMMA Gyromagnetic ratio of proton 2.67519E+8 26751.9 H Plank constant 6.6256E-34 6.6256E-27 K Boltzmann constant 1.38054E-23 1.38054E-16 ME Electron rest mass 9.1091E-31 9.1091E-28 MP Proton rest mass 1.67252E-27 1.67252E-24 MUB Bohr magneton 9.2732E-24 9.2732E-21 N Avogadro constant 6.02252E+23 6.022S2E+23 Q Elementary charge 1.60210E-19 1.60210E-20 CME Charge to mass ratio for electron 1.758796E+11 17587960. R Gas constant 8.3143 8.3143E+7 RINF Rydberg constant 10973731. 109737.31 SIGMA Stephan-Boltzmann constant 5.6697E-8 5.6697E-5 For further information on the use of fundamental physical constants see ASTM Metric Practice Guide, Second Edition, NBS Handbook 102, U. S. Government Printing Office (1966). Values of the constants are given on pages 42 and 43. 1.15 Characters Recognized. The CMNITAB computing system recognizes and uses the letters A through Z, through 9 and the 12 special characters: the digits (blank) / c ) All other characters , such as the one given by a multiple equivalent to $. See section 1.5 for possible effects. 11-8-2 punch, are made 22 1.16 Commands With Qualifiers . Some commands have a qualifier denoted by "L", where "L" indicates any one of the letters A, B, C, D,~E or F. These qualifiers are used to distinguish between formats and tapes (except in DUMMY "L") . The qualifier (without quotation marks) is part of the command. One blank space must precede and follow the qualifier without any additional characters. All of the magnetic tape operation commands have either one or two qualifiers. One instruction,. RESET "V", has the qualifier "V", where "V" denotes the letter V, W, X, Y or Z. The commands with qualifiers are: FORMAT "L" READ TAPE "L" READ TAPE "L" "L" PRINT "L" CREAD TAPE "L" CREAD TAPE "L" "L" PUNCH "L" WRITE TAPE "L" WRITE TAPE "L" "L" READ "L" SET TAPE "L" ABRIDGE "L" CSET TAPE "L" NPRINT "L" ENDFILE TAPE "L" APRINT "L" SKIP TAPE "L" MPRINT "L" BACKSPACE TAPE "L" RESET "V" REWIND TAPE "L" DUMMY "L" 23 2. REPEATED USE OF COMMANDS . Ordinarily, each instruction is executed once and only once as soon as it is encountered. Often, an instruction has to be repeated several times and it would be cumbersome to have to write out an instruction each time. For example, to compute the average value of the numbers in each of the nine columns 11 through 19 and put the results in columns 21 through 29, it would be annoying to write AVERAGE 11,21 AVERAGE 12,22 AVERAGE 13,23 AVERAGE 14,24 AVERAGE 15,25 AVERAGE 16,26 AVERAGE 17,27 AVERAGE 18,28 AVERAGE 19,29 If we wanted to do something similar 100 times rather than 9 the task would be formidable. A much simpler procedure exists which involves storing, or saving, instructions for repeated use. Instructions which are to be repeated are saved for later use. They are not executed when encountered but are only executed when the appropriate instruction is given. The command of a stored instruction must be preceded by a valid instruction number and a slash, /, as in 1/ AVERAGE 11,21 A stored instruction would have limited utility if there were not also an easy way of modifying the instruction. In our example, the second time the instruction AVERAGE is used the arguments have to be changed from 11 and 21 to 12 and 22. Modifying instructions is accomplished by using the INCREMENT instruction. We now have 1/ AVERAGE the values in column 11 and put in col 12 2/ INCREMENT instruction 1 by 1 1 These instructions will be stored but no computing will result. To execute the instructions and compute we must use the instruction PERFORM, indicating which instructions are to be executed and how often. Thus, our complete set of instructions is 1/ AVERAGE the values in column 11 and put in col 12 2/ INCREMENT instruction 1 by 1 and 1 PERFORM instructions 1 thru 2, 9 times General information for the use of stored instructions is given in the sections which follow. Some of the information on specific instructions is repeated in PART C. A complete discussion of error diagnostics, and in particular of FATAL ERRORS, is given in section 3. Several of them pertain to the repeated use of the commands and these are given in the following discussions. In the REPEAT mode (repeated use of instructions) the error message comes after the PERFORM instruction and also gives the instruction (statement) number and the time, or cycle, through the stored instructions in which the error occurred. A complete message is shown in the following example: 24 OMNITAB 8/18/70 GENERATE 1.(1. )100. into column 1 1/ PROMOTE 25 rows, col 1 into col 11 2/ INCREMENT instr 1 by 20, 0, 1 PERFORM instructions 1 thru 2, 7 times * INFORMATIVE DIAGNOSTIC IN ABOVE COMMAND * ATTEMPT TO PROMOTE FROM BELOW NRMAX. FIRST ARGUMENT IS RESET TO NRMAX. IN COMMAND AT STATEMENT NUMBER 1.0 CYCLE NO. 5 OF 7 OF EXTERNAL PERFORM STATEMENT. 2.1 Numbering Instructions . An instruction number is a number between 0.1 and 999.9 inclusive. Normally, integers are used without a decimal point. One digit is allowed after a decimal point. If the number is less than 1 a zero must precede the decimal point, e.g., 0.6 is a valid instruction number, but .6 is not. An instruction number which is an exact integer must not be written with a decimal point unless a zero follows the decimal point. E.g., 28 and 28.0 are valid instruction numbers, but 28. is not. Any statement number which does not conform to these rules produces the FATAL ERROR *** ILLEGAL STATEMENT NUMBER Decimal points in an instruction number are usually used only when instructions are added as an af terthought . To insert an ADD instruction between instructions 23/ and 24/ we might for' example use 23.5/ ADD column 3 to column 4 and put in column 5 and avoid having to renumber all the instructions which follow. A numbered instruction must not immediately follow a data card. If one wants to put numbered instructions right after data cards, the first numbered instruction should be preceded by the command NULL. Also, a numbered instruction must precede the PERFORM instruction which executes it. An instruction number can be used more than once in a set of instructions. After a stored instruction lias been used, i.e., executed by a PERFORM instruction, it is sometimes preferable to reuse the number in the work that follows rather than to use a new number. See, also, section 2.3. A numbered instruction is saved, hence when a number is reused the new instruction replaces the previous one. The previous instruction is now destroyed and the new one is saved. The instruction OMNITAB automatically removes all previously saved instructions. Any unnumbered instruction which appears between two numbered instructions is executed at once as usual. The same result would be obtained if the unnumbered instruction appeared just before or just after the numbered instructions. For reasons discussed below, the command PERFORM is an exception to this rule. One or more blank spaces can be used on either side of the slash following an instruction number. Instructions are executed in the same order they are numbered regardless of their physical order. If ten cards with instruction numbers 1, 2 ... 10 were shuffled and then put back in the set of instructions, the results would be exactly the same as those obtained had the cards been supplied in order. There is a limit to the number of instructions which can be stored in the computer. The limit is rarely exceeded, but when it is the following FATAL ERROR results 25 *** COMMAND STORAGE AREA OVERFLOW A precise statement cannot easily be made about the size of this limit. It depends on the number of arguments in each of the stored instructions. The number is roughly 250. 2.2 Use Of PERFORM . The instruction PERFORM causes the execution of all stored instructions with numbers between the first and second arguments, inclusive. The third argument indicates the number of times the instructions are to be executed. The PERFORM instruction must follow the stored instructions which are to be executed. The commands EXECUTE and REPEAT are identical in every way to PERFORM. PERFORM usually lias three arguments, but may have only two or one. The 1st argument must be less than or equal to the 2nd argument. If the third argument is missing it is assumed to be 1. Thus, PERFORM instructions 11 thru 17, 1 time and PERFORM instructions 11 thru 17 are equivalent. If both the second and third arguments are missing, the third argument is assumed to be 1 and the second argument is assumed to be the same as the first. Thus, PERFORM 37 is equivalent to PERFORM 37 through 37 and is also equivalent to PERFORM instructions 37 thru 37, 1 time Note that in the above examples the first instruction number is not 1. The instruction numbers in a PERFORM instruction can be any valid instruction number providing it has been used. The first argument does not have to correspond with the first numbered instruction and the second argument does not have to correspond with last numbered instruction. Any instruction m.jnber that is referred to must exist. In the above example if no instruction numbered 37 exists, the following FATAL ERROR will occur *** STATEMENT NUMBER NOT FOUND PERFORM can be a stored instruction to be executed by another PERFORM instruction. But an instruction cannot repeat itself. The instruction 17/ PERFORM 15 thru 20, 5 times would produce the FATAL ERROR *** STORED PERFORM STATEMENT WILL EXECUTE ITSELF Caution: Do not make the common mistake of using *** in place of thru. The instruction PERFORM 1 *** 5, 15 times is interpreted as PERFORM 1,2,3,4,5, 15 times and would produce a FATAL ERROR because there is an illegal number of arguments. When PERFORM is a numbered instruction we refer to it as a PERFORM within a PERFORM. The maximum number of PERFORM commands allowed within a PERFORM is eight. Care should be exercised in using PERFORM as a numbered instruction. Following the instructions 26 1/ 2/ 3/ PERFORM 1,2,5 4/ 5/ the instruction PERFORM 1 thru 5, 10 times may possibly be correct. However, often it is used mistakenly in place of PERFORM 3 thru 5, 10 times 2.3 Use Of INCREMENT . The INCREMENT instruction has exactly one more argument than the instruction that is to be modified. The extra argument is the first one which is the instruction number of the modified instruction. All arguments must agree in kind with the instruction referred to. If a decimal point is used in an argument of an instruction, a decimal point must be used in the corresponding argument in the INCREMENT instruction. Similarly, if a decimal point is not used, then a decimal point must not be used in the corresponding argument of the INCREMENT instruction. For the instruction 27/ ADD the value 1.0 to column 2 and put in column 3 the instruction 28/ INCREMENT 27 by 3.0 1 is correct, but the instructions 28/ INCREMENT 27 by 1 1 and 28/ INCREMENT 27 by 1.0 1.0 1 are both incorrect. An INCREMENT instruction can be incremented by another INCREMENT instruction. If it is, care should be used. Naturally, an INCREMENT instruction cannot increment itself, if such an attempt is made the following FATAL ERROR will occur: *** AN INCREMENT COMMAND CAN NOT INCREMENT ITSELF If asterisks are used to define an argument (see section 1.8) the INCREMENT instruction must also contain asterisks. The instruction 18/ ADD the value defined by *1,2* to col 11 and put in col 12 adds the number in row 1 of column 2 to every number in column 11 and puts the result in column 12. The defining row and column numbers in the argument *1,2* can be incremented individually using asterisks as in 19/ INCREMENT instr 18 by *1,0* 1 Do not make the mistake of thinking that because *1,2* represents a number, that instruction 18 could be incremented by a number as in 19/ INCREMENT instr 18 by 3.7 1 27 This instruction would produce a fatal error because the argument is improper. The INCREMENT instruction can be used to increment instructions which contain NRMAX or one of the variables enclosed in either single or double asterisks. But the variable itself cannot be incremented this way. In the INCREMENT instruction, 0.0, without asterisks, should be. used in the corresponding argument for NRMAX or "V". A decimal point must always be used with zero, even if the argument which is being incremented is an integer; as in **V**. The instruction 35/ DIVIDE column 27 by *NRMAX* and put in col 28 could be incremented by 36/ INCREMENT 35 by 1 0.0 1 An instruction containing triple asterisks to imply through can also be incremented, but care should be used. The instructions 31/ PRINT the numbers in columns 1 *** 5 32/ INCREMENT instr 31 by 10 *** 11 PERFORM 31 thru 32, 2 times would print the contents of columns 1,2,3,4,5 and 11,12,13,14,15 and 16. The two numbers on either side of the asterisks do not have to agree. Some care should be exercised in choosing the location of an INCREMENT instruction. The usual and best practice is to have the INCREMENT instruction follow the instruction that is being incremented as in the above examples. In the opening example on page 24 1/ INCREMENT instruction 2 by 1 1 2/ AVERAGE the values in column 11 and put in column 12 PERFORM instructions 1 thru 2, 9 times would work, but would yield the wrong answers. If the instructions^were to be used this way, instruction 2 should read 2/ AVERAGE the values in column 10 and put in column 11 In this connection, note that 13/ SQUARE column and put in column 1 is not necessarily incorrect. Although is an illegal column number, the instruction would be valid if were incremented correctly prior to the execution of instruction 13. After an instruction has been incremented, it is often desirable to restore the instruction to its original form for further use. This may happen, for example, if a set of operations is used for several sets of data or when one has a PERFORM within a PERFORM. It can be done in three different ways. The INCREMENT instruction can be used, possibly with negative arguments, but this method is sometimes tricky and is prone to errors. One can simply rewrite the numbered instruction in its original form (or any other form for that matter). This wipes out the instruction you had and replaces it with the new one. The third method is to use the instruction RESTORE. The instruction RESTORE does not have to be stored (numbered) . Suppose we want to read into the worksheet eight columns of data to find the averages and to repeat this 15 times. Then, we could use the following instructions: 28 1/ AVERAGE column 11 put in column 21 2/ INCREMENT instr 1 by 1 1 3/ PERFORM instrs 1 to 2, 8 times 4/ ABRIDGE row 1 of columns 21 *** 28 5/ RESTORE instr 1 to 11 21 READ data into columns 11 *** 18 ( data cards ) PERFORM instrs 3 to 5 READ data into columns 11 *** 18 ( data cards ) PERFORM instrs 3 thru 5 etc. ( repeallast three lines 12 times ) An exception exists for instructions for using magnetic tapes. The qualifier of a. tape operation instruction, which refers to a tape' number, must be incremented even though it is not an argument. This is true for tape operation instructions only. If the command has two qualifiers, the first qualifier refers to a tape and the second to a format. Only the first qualifier should be incremented. Usually the number zero is used in the INCREMENT instruction to increment the tape number. See PART C for further details and, in particular, non-NBS users should verify that the magnetic tape operation instructions operate with their computer as described herein. 2.4 Instructions Which Must Be Stored . Most instructions can be either stored or not stored. Because of their form, the following instructions must always be stored for later use: COMPARE ISOLATE ITERATE IFEQ IFNE IFGE IFGT IFLE IFLT Actually, ISOLATE and ITERATE do not have to be stored, but in almost all applications they should be stored. When an instruction which must be stored appears without an instruction number, the following FATAL ERROR occurs *** CONflAND MUST BE STORED The instruction NULL does not have to be stored, but its chief use is as a stored instruction to wipe out an instruction that is no longer wanted. 2.5 Instructions Which Cannot Be Stored . Most instructions can be stored for repeated execution. Because of their form, the following instructions must not be stored: ' FORMAT "L" HEAD NOTE N0TE1 N0TE2 OMNITAB STOP READ SET TITLE1 TITLE2 TITLE3 TITLE4 TITLEX TITLEY BEGIN FINISH If the command BEGIN is stored (pi >:eded by an instruction number), the following FATAL ERROR will occur: *** COMMAND NOT ALLOWED IN THE REPEAT MODE If any of the commands FORMAT, NOTE, TITLE or HEAD are stored, the following INFORMATIVE DIAGNOSTIC (see section 3.4) will be given: * COMMAND NOT ALLOWED IN THE REPEAT MODE. EXECUTED BUT NOT STORED No diagnostic is given if either READ, SET or FINISH is stored. 29 Although N0TE1 and N0TE2 cannot be stored, the instruction PRINT NOTE can be stored and it is PRINT NOTE which actually executes N0TE1 and N0TE2. Also, although READ cannot be stored, the command READ "L" format can be stored. If the command READ "L" is stored, the data should immediately follow the external PERFORM instruction which executes READ "L". The data should not immediately follow the READ "L" command as would be the case if the command were not stored. External means that the PERFORM command is not stored as opposed to an internal (with respect to the REPEAT mode) PERFORM which is stored. READ "L" can be used effectively as a stored instruction when it is necessary to perform the same set of operations on several different sets of data, but extreme care should be exercised. If a FATAL ERROR occurs before the READ "L" instruction is executed, the external PERFORM instruction will not execute the READ "L" instruction. As a severe consequence, the data which follow the external PERFORM will be treated as instructions rather than data and FATAL ERRORS will result. If there is a large number of data cards, a large number of FATAL ERRORS will result which also can consume a lot of computer time. Consequently, every instruction should be very carefully checked to ensure that it is correct. It may even be advisable to make a trial run without data just to be sure there are no FATAL ERRORS. When identical operations are performed on different sets of data, each set is preceded by an appropriate READ instruction and then followed by the appropriate PERFORM instruction. 2.6 Use Of BEGIN And FINISH . The technique of using BEGIN and FINISH is retained from the original OMNITAB. Although it is simple, it has several disadvantages. If an instruction is added later, the numbering sequence will change and all the INCREMENT instructions may have to be changed accordingly. An instruction which is not to be stored cannot be used between BEGIN and FINISH. The method of numbering instructions directly can be avoided by simply using the instruction BEGIN storing instructions hnmediately before the first instruction to be stored and using the instruction FINISH storing instructions immediately after the last instruction to be stored. Instructions are automatically numbered by the computer starting with 1 and proceeding in steps of 1 until the last instruction, before FINISH, has been numbered. In the LIST OF COMMANDS, the instruction number assigned by the computer is listed on the extreme left. If you want the instructions numbered starting with some number other than 1, use the instruction BEGIN storing instructions starting with number (N) This instruction should be used if BEGIN is used more than once in the same set of instructions and earlier instructions are not to be wiped out. The instructions BEGIN and BEGIN 1 are equivalent. Manually numbered instructions can be used in conjunction with BEGIN and FINISH. But they must not be placed between BEGIN and FINISH or the FATAL ERROR *** STATEMENT NUMBER MAY NOT BEGIN ANY CARD BETWEEN BEGIN AND FINISH CARDS 30 will result. Any instruction numbered manually automatically wipes out the instruction which has been given the same number by the computer. The instructions BEGIN ADD 1.0 1.0 11 INCREMENT 1 by 0.0 1.0 1 FINISH PERFORM 1,2,4 1/ MULTIPLY 2.0, 1.0, 15 PERFORM 1,2,4 will put the numbers 2,3,4,5 and 2,4,6,8 into columns 11 through 18. If, in the above example, we were to replace 1/ MULTIPLY 2.0, 1.0, 15 by BEGIN MULTIPLY 2.0, 1.0, 15 FINISH the original ADD instruction would be deleted as soon as the second BEGIN was encountered, but not before the first PERFORM had been executed. The INCREMENT instruction, instruction numbered 2, would remain intact as only one instruction had been used after the second BEGIN. 2 . 7 Branching . Branching (or logical branching) is a term used to describe a point in a set of instructions where one group of instructions is executed if a certain condition is true and a different set of instructions is executed if the condition is false. Branching is common in most computer languages such as FORTRAN. In OMNITAB, branching is seldom necessary. It primarily occurs in iterative procedures used in non-linear least squares, inverse interpolation, finding the values of an inverse function, etc. The seven instructions used in branching COMPARE IFEQ IFNE IFGE IFGT IFLE IFLT are described in PART C. Of these instructions, COMPARE is probably the one most often used. Note, all branching instructions must be stored. 2.8 Additional Comments . Earlier it was explained how to find the average value of the numbers in several columns using stored instructions or the REPEAT MODE. Notice that it was necessary to have the original data in consecutive columns (or have adjacent column numbers differ by a constant amount); similarly for the results. This type of procedure is not always necessary. Clearly, most of the instructions for entering and printing data, such as READ and PRINT, will operate on several different columns whose numbers are not necessarily evenly spaced (or even monotonic). In addition, some of the manipulative and arithmetic instructions can perform operations on several different columns. For example, FLIP column 11 into 2, 3 into 17, 8 into 5, and 31 into 12 The following is a list of such commands: ERASE PRODUCT CHANGE CLOSE UP DEMOTE EXCHANGE FLIP ORDER PROMOTE ROW SUM SORT 31 Care should be exercised in the use of these instructions if any column number is used more than once. For example, the instruction FLIP column 11 into column 12 and column 12 into column 13 is valid,' but all it does in effect is move column 11 into column 13. The more experienced user would do well to note that the array and matrix operation instructions can be used very effectively for data manipulation without resorting to the use of the REPEAT mode. Matrix operation instructions can be used to perform operations usually associated with matrix algebra (MINVERT) , but are perhaps more often used for data manipulation. As an illustrative example solely, and not particularly useful in this case, consider the earlier problem of finding the averages for columns 11 through 19. If NRMAX = 50, we could use the following set of instructions: DEFINE 1.0 into column 20 M(V'A) 1,11 size 50x9 by column 20, store 1,21 ADIVIDE the array in 1,21 by 50.0 and put in 1,21 DUPLICATE 50 times the array in 1,21 size 1,9 put in 1,21 The last instruction would only be desirable, or necessary, if further calculations were to be performed on the averages. Note, **NRMAX** could be used for 50, if NRMAX was unknown; and instead of 50.0 we could use *NRMAX* (see section 1.8). A good use of the PERFORM instruction is in the generation of ad hoc subprograms or subroutines as they are usually called. It is not uncommon to write a set of instructions which can be used as a subprogram or may be used in different sets of instructions at different times by different people. Often the subprogram takes the place of an instruction that does not exist. There is no instruction to compute the harmonic mean of a column of numbers. If there were a great demand for the instruction, the command HARMONIC MEAN might be added to the vocabulary, But until such time, cards could be punched for the following instructions 501/ DIVIDE 1.0 by column 1 and put in column 2 502/ AVERAGE column 2 and put in column 2 503/ DIVIDE 1.0 by column 2 and put in column 2 These cards could be kept and every time we want the harmonic mean of column 1 put in column 2 we would use the cards with PERFORM instructions 501 thru 503 The subroutine above can be made more general by using **X** and **Y** in place of column 1 and column 2. The variables X and Y could then be RESET to the desired value each time the subroutine is used. This procedure is particular useful if the subroutine is lengthy or complex. With a little extra effort and cooperation among colleagues, a small local subroutine library can be maintained for special purposes. The NBS Statistical Engineering Laboratory maintains a small library for its own use. 32 3. DIAGNOSTIC FEATURES AND ACCURACY 3.1 Diagnostic Features . After a set of instructions has been executed, the master program prints the LIST OF COMMANDS, DATA AND DIAGNOSTICS subject to certain restraints which may be imposed by the user. See LIST, NO LIST and READ "L" in PART C. Each card that is processed is listed and any errors in an instruction that have been detected are listed just below the instruction. The simplicity of OMNITAB and the natural structure of the language make it quite possible to write a set of instructions free of errors. But when a set of instructions is written in haste or if the set is complicated, the user may make some errors. The diagnostics which are printed make it easy to spot an error and correct it. Considerable care and attention has been given to the proper detection and identification of errors by the master program. There are three levels of errors and diagnostic messages: (i) fatal errors, (ii) arithmetic faults and (iii) informative diagnostics. An example of each is given in the following example. OMNITAB 6/12/70 EXAMPLE OF ERROR DIAGNOSTICS LIST OF COMMANDS, DATA AND DIAGNOSTICS TITLE7 PLOT OF LOG OF X * INFORMATIVE DIAGNOSTIC IN ABOVE COMMAND * IMPROPER TITLE NUMBER, ASSUMED 1 GENERATE 0.0(. 01)1.0 IN COLUMN 1 LOGTEN OF COLUMN 1 PUT IN COLUMN 2 ** ARITHMETIC FAULT IN ABOVE COMMAND, ZERO RETURNED 1 TIMES ** NEGATIVE ARGUMENT TO SQRT, LOG OR RAISE PLOT COLUMN 2 VERSUS COLUMN 1 SQUARE 2,3 INVERT 1,1 SIZE 3,3 STORE 1,4 ++++++++++++++++++++ SMALLEST ERROR BOUND ON INVERTED MATRIX IS .5-03 +++ PRIMT COLUMNS 4, 5 AND 6 *** FATAL ERROR IN ABOVE COMMAND *** NAME NOT FOUND IN LIBRARY ONLY ONE FATAL ERROR A single asterisk is printed at the extreme left of an informative diagnostic, two asterisks for an arithmetic fault, and three asterisks for a fatal error message. In addition, an error bound follows a series of +'s after the command INVERT as shown above. Each type of error message is discussed separately in the next three sections. 33 A fatal error in an instruction results in a failure to execute that instruction and all subsequent instructions. However, the execution of instructions is not affected by arithmetic faults or informative diagnostics. The guiding principle is that computation should be allowed to continue as long as at least part of the results are likely to be useful. (The command NOTE is an exception; see PART C for details.) 3.2 Fatal Errors . A FATAL ERROR occurs if an instruction is incorrectly written and the consequences would seriously affect the results of executing subsequent instructions. When a FATAL ERROR occurs in an instruction, that instruction and all subsequent instructions are not executed. However, the remaining instructions are examined to detect any other errors that can be found simply by reading the instruction. Errors which can only be detected when the instruction is executed will not be found if a FATAL ERROR has already occurred. If a FATAL ERROR is detected in a stored (numbered) instruction, the remaining stored instructions are not checked for errors. This is worth noting for the correction of a FATAL ERROR in a stored instruction does not necessarily mean that there are no more errors. The user should double check the remaining stored instructions to assure that they are correctly written. If a FATAL ERROR occurs in a set of instructions, the number of FATAL ERRORS is given at the end of the LIST OF COMMANDS, DATA AND DIAGNOSTICS as in the example of section 3.1. The notation (n) is used to indicate a number which is printed by an error message. The following are the most common FATAL ERRORS and can occur in many different ways: *** NAME NOT FOUND IN LIBRARY *** ILLEGAL ARGUMENT ON CARD *** NRMAX=0 *** (n) IS AN ILLEGAL NUMBER OF ARGUMENTS *** COLUMN NUMBER TOO BIG OR LESS THAN 1 *** IMPROPER TYPE OF ARGUMENT The following FATAL ERRORS can occur in the use of stored instructions . See section 2 and PART C for further details. *** ILLEGAL STATEMENT NUMBER *** COMMAND NOT ALLOWED IN THE REPEAT MODE *** STATEMENT NUMBER MAY NOT BEGIN ANY CARD BETWEEN BEGIN AND FINISH CARDS *** COMMAND STORAGE AREA OVERFLOW *** STATEMENT NUMBER NOT FOUND *** STORED PERFORM STATEMENT WILL EXECUTE ITSELF *** COMMAND MUST BE STORED *** AN INCREMENT COMMAND CAN NOT INCREMENT ITSELF *** ILLEGAL *STATEMENT* The following FATAL ERRORS can only occur in a particular instruction or group of instructions : *** DIMENSIONED AREA EXCEEDS LIMIT *** ILLEGAL SIZE ROW NUMBER *** DEFINED MATRIX OVERFLOWS WORKSHEET aaa INTEGER ARGUMENT LESS THAN -8191 *** MATRIX IS (NEARLY) SINGULAR *** INSUFFICIENT SCRATCH AREA *** DEGREE IS LARGER THAN NO. OF NON-ZERO WEIGHTS *** NEGATIVE WEIGHTS MAY NOT BE USED *** NUMBER OF COLUMNS IS GREATER THAN NUMBER OF ROWS 34 *** FORMAT NOT FOUND *** INCORRECT TAPE UNIT, COMMAND IS NOT EXECUTED *** NUMBER OF ARGUMENTS SHOULD BE (n) *** MATRIX IS NOT SYMMETRIC 3.3 Arithmetic Faults . An arithmetic fault occurs in an attempt to perform an operation which is normally undefined. For example, division by zero is not defined mathematically. In OMNITAB there are nine different types of arithmetic faults which cause the printing of a diagnostic message. Arithmetic errors may result from (i) accidental use by a user of an improper value, (ii) intentional use (see section 4.6), or (iii) an occasional occurrence of an improper number in calculations performed internally by an instruction. Below each instruction which produces an arithmetic fault a diagnostic message is printed showing the number of times the error occurred. In each case the functional value is set equal to zero and the computation continues. Often, zero is the result desired. In particular, the result of dividing any number by zero is defined to be zero. This is always true for instructions which are directly concerned with division such as DIVIDE, ADIVIDE and CDIVIDE. Division by zero may accidentally occur somewhere in the middle of a set of calculations controlled by an instruction where the division operation is not obviously indicated, as in FIT. Here, most computers, including the NBS computer, will set the result equal to zero. But a few computers give an error termination and all computation ceases. Where it is known that division by zero may occur, steps have been taken to avoid an error termination, but this problem has not been eliminated completely. An error termination will occur only rarely. Arithmetic errors which appear to be beyond the user's control can occur in instructions like FIT and INVERT. Sometimes the errors are of little significance and can be essentially ignored. At other times it is an indication of serious difficulty. The difficulty may be inherent, but sometimes it can be removed by a reformulation of the problem. For example, a FIT using a set of vectors which are almost dependent may produce serious round-off errors which can be eliminated by using a different model having a set of vectors which are more independent . To avoid the excessive printing of diagnostics, a tally is kept. After the first 100 arithmetic faults have been found, the following message is printed: * 100 INFORMATIVE AND ARITHMETIC DIAGNOSTICS HAVE BEEN ENCOUNTERED. * ANY SUCH ADDITIONAL DIAGNOSTICS FOR THIS COMMAND OR REPEAT MODE ARE DISREGARDED. The most commmon arithmetic faults occur in division by zero, taking the square root of a negative number and in attempting to take the logarithm of a non-positive number. The folowing are the nine possible arithmetic faults which can occur: ** NEGATIVE ARGUMENT TO SORT, LOG OR RAISE ** EVALUATION OF EXPONENT PRODUCES OVERFLOW ** ARGUMENT OUT OF BOUNDS TO INVERSE FUNCTION ** ARGUMENT TOO LARGE FOR SIN OR COS, ZERO RETURNED (n) TIMES ** BESSEL ARGUMENTS SCALED TO AVOID OVER/UNDER FLOW. RETURNED (n) TIMES ** DIVISION BY ZERO, RESULT SET=0, (n) TIMES ** TRIG FUNCTION NOT DEFINED RESULTS SET=0 (n) TIMES ** ONE OF THE VALUES COMPARED IS ZERO, ABSOLUTE TOLERANCE WAS USED (n) TIMES ** X FOR ELLIPTICAL INTEGRALS IS = 1.0 OR GREATER. RESULT IS SET TO 0.0 (n) TIMES 35 j.\ Informative Diagnostics . Individual instructions may impose certain restrictions which when violated produce the printing of an informative diagnostic. An appropriate adjustment is made by the master program and computation -continues. As an example consider: CMNITAB GENERATE 1.(1.) 300. IN COLUMN 1 * INFORMATIVE DIAGNOSTIC IN ABOVE COMMAND * TOO MUCH DATA IN SET, READ OR GENERATE, SPILL LOST Either the user forgot to put in a DIMENSION instruction or the 3 was incorrectly punched for a 2, say. An informative diagnostic is given rather than a fatal error on the basis that the results may be at least partially useful, although not necessarily. Often the error is of minor or no significance. But the error can be serious and the user should carefully check the importance of the diagnostic. As was true for arithmetic faults, see section 3.3, after the first 100 informative diagnostics occur, the following message is printed: * 100 INFORMATIVE AND ARITHMETIC DIAGNOSTICS HAVE BEEN ENCOUNTERED. * ANY SUCH ADDITIONAL DIAGNOSTICS FOR THIS COMMAND OR REPEAT MODE ARE DISREGARDED. In most cases, a specific informative diagnostic can only result from the use of one particular instruction or group of instructions. A complete list of the informative diagnostics which are possible is given below. * TOO MUCH DATA IN SET, READ OR GENERATE, SPILL LOST * COMMAND NOT ALLOWED IN REPEAT MODE. EXECUTED BUT NOT STORED * VALUE REQUESTED IN SHORTEN, ACOALESCE OR AAVERAGE NOT FOUND. * BAD HEAD. COLUMN GT 50 OR NO / * THIS COMMAND WAS NOT EXECUTED BECAUSE ITS MEANING WAS QUESTIONABLE * F LESS THAN 0, SET = * NU1 OR NU2 LESS THAN 1 * NU1 OR NU2 TRUNCATED TO INTEGER * IMPROPER TITLE NUMBER, ASSUMED 1 * NO OF ROWS NOT = TO COLS. MATRIX USED LARGEST SQUARE * ASTERISK STRING IMPLYING 'THRU' INCORRECT, IGNORED * UNNECESSARY ARGUMENTS IN COMMAND IGNORED * PARTIAL STORAGE OF MATRIX * INSUFFICIENT SCRATCH AREA * NRMAX IS NOT LARGE ENOUGH TO ALLOW ITERATION * 1ST COLUMN OF ISETUP OR ISOLATE IS NOT MONOTONIC OR IS CONSTANT * ITERATION HAS FOUND NO VALUES * WORKSHEET IS TOO SHORT TO ACCOMMODATE ALL THE VALUES GENERATED BY THIS COMMAND. * MAXMIN HAS FOUND NO EXTREMA * MAXMIN HAS FOUND AND IGNORED A TRIAD OF X'S WITH AT LEAST TWO IDENTICAL VALUES. * MORE THAN ONE ARGUMENT IN COMMAND. ONLY FIRST ONE IS USED * FORMAT NOT FOUND. READABLE FORMAT IS USED * ONE, SOME OR ALL WEIGHTS ARE NEGATIVE * ALL WEIGHTS ARE ZERO. COMMAND IS NOT EXECUTED * ARG FOR BESIN,BESJN,BESKN GIVES A RESULT TOO LARGE/ SMALL. COMMAND NOT EXECUTED. * COLUMN NOT LONG ENOUGH TO STORE ALL ELEMENTS. ONLY NROW WILL BE STORED. * NOT ENOUGH DATA ON COL TO RESTORE MATRIX/ARRAY. DATA AVAILABLE WILL BE USED. * SUM OF SQRS DO NOT ADD UP-ABS. VALUE OF (TOTAL -ROW- COL -RES. )/TOTAL EXCEEDS 5.E-7) * MORE THAN 50 HEAD COLUMN COMMANDS HAVE BEEN USED. * ATTEMPT TO PROMOTE FROM BELOW NRMAX. FIRST ARGUMENT IS RESET TO NRMAX. 36 * ATTEMPT TO DEMOTE OFF THE WORKSHEET. SPILL IS LOST. * NEGATIVE VALUE (S) WERE ENCOUNTERED BY PARTITION FUNCTION. ZEROES STORED. * NEGATIVE ABSOLUTE TEMPERATURES CONVERTED. * CAUTION, USE EXPERIMENTALLY ONLY. NOT OPTIMUM IN ORDER TO MAKE IT MACHINE INDEPENDENT. REFERENCES - J.B.KRUSKAL, ACM, 12, 92. AND J.H. HALTON,SIAM REV., 12,1. * COMMAND IGNORED - S BEFORE COMMAND NAT-IE MEANINGLESS IF NO STORAGE REQUESTED. * NUMBER OF SIGNIFICANT DIGITS AFTER DECIMAL FT. HAS BEEN SET TO (n) 3.5 Accuracy In The Use Of Instructions. Each of two or more instructions can give fully accurate results, but when used together inaccuracies can occur. Consider DIVIDE 2. by 3. and put in column 1 DIVIDE 1. by 3. and put in column 2 SUBTRACT column 2 from column 1 and put in column 3 The results correct to 8 digits in columns 1 and 2 are 0.66666667 and 0.33333333. The result in column 3, which is supposed to be 1/3. is 0.33333334. An error of one lias been introduced in the eighth digit in a trivial operation. This example is an extreme over- simplification of situations which can cause serious problems. A main source of error in computing is in the subtraction of two quantities which are almost equal. The operation 1965.3289 - 1965.3276 = 0.0013 starts with two numbers having 8 significant digits and yields a result which is only accurate to two significant digits. Small errors should not be dismissed lightly. The essential charateristic of a computer is its ability to perform millions of calculations in a small time. The small errors can accumulate into very large errors quickly. This is dramatically illustrated in the following example taken from "Topics in the investigation of linear relations fitted by the method of least squares." F. J. Anscombe, J. R. Statist. Soc, B, 29, 1-29 (1967). The so-called computational formula for the variance of a set of measurements appears in most elementary books on statistics and statistical computing. If the formula l n .x! - (Ix.) 2 /n '■1=1 i L 1/ (n-1) is applied to the measurements 9000, 9001 and 9003 the result is in error in the first digit. But if the definition of the variance Ei =1 (x ± - x) 2 /(n-l) is used, the result is correct to 8 digits. This example shows how easy it is to get inaccurate results with a poor formula and at the same time demonstrates how accurate results can be achieved by choosing the appropriate algorithm (formula) . The novice, who is familiar with the use of a desk calculator, should realize that computational difficulties that arise in hand calculations may easily be spotted and corrected. But when the same calculations are done using a computer, the user may only see the final result and errors may go undetected. 37 In the days before the computer was invented, people went to some length to provide excellent cross checks on computations. For some reason, these cross checks are often ignored when a computer is used. Perhaps people falsely assume that humans make mistakes and computers don't. We should re-introduce cross checking. Whenever feasible, two independent methods should be used. The command APROPERTIES can often be used effectively to check the correctness of data entered into the worksheet and subsequent calculations. The instruction APROPERTIES produces most of the information formerly given by the old command SUMMARIZE, which it replaces, such as sum of values, minimum value, etc.. 3.6 Accuracy Of Instructions . The developers of OMNITAB consider accuracy to be of paramount importance. The idiosyncrasies of a computer make it particularly important to exercise extreme care and caution in writing the master program. At times some loss in efficiency results in an attempt to provide greater accuracy. It is small comfort to know that you were able to do your computing in one or two seconds less time if the answers are incorrect. Seldom is the increase in computing time (or cost) to achieve greater accuracy of any consequence. Often the improved accuracy avoids considerable embarassment resulting from publication of meaningless results. In problems for which OMNITAB is useful, the computing cost is usually a small fraction of the total cost of the scientific effort and a few more seconds of computer time to obtain accurate results is a small price to pay. An emphasis on accuracy is particularly important in a system like OMNITAB which may be used by persons unfamiliar with the internal workings of a computer. When it is known that an instruction can produce inaccurate results in certain circumstances, an indication of the accuracy of the instructions should be printed. Notable examples appear in the commands FIT and INVERT. The FIT instruction indicates the computing accuracy of the least-squares coefficients in the automatic printing. (See PART C for further details.) Under rather general conditions, a matrix can be inverted exactly. (See "Solving equations exactly," Morris Newman, J. Res. NBS 71B (1967), 4, 171-179.) But in this case, the additional cost is considerable and not deemed justified for routine use. The algorithm that is used produces an error bound which is printed in the LIST OF COMMANDS, DATA AND DIAGNOSTICS immediately after the listing of the command INVERT (or MINVERT) . The original OMNITAB had its own programs to compute the elementary functions (SIN, LOGE, etc.) which were of known accuracy. In order to make CMNITAB as machine independent as possible, we are unable to follow this procedure and must rely on the system library of the particular computer system in use. The accuracy of system library subroutines varies from one computer to another. Some are quite accurate. Others are surprisingly inaccurate as was explained excellently by W. J. Cody, "Software for the Elementary Functions," Mathematical Software Symposium, Purdue University, April 1-3, 1970. The user should not blithely assume that all 8 digits are correct (or that full machine accuracy is obtained). Because accuracy is considered very important, the user should not expect that full accuracy is always achieved. OMNITAB is a large system and it would be unheard of with the present state of the computing art to have complete accuracy throughout. The master program is continually being revised to obtain greater accuracy. Although the FIT instruction is accurate ("An Evaluation of Linear Least Squares Computer Programs," R. H. Wampler, NBS J. Res., 74B, 59-90, 1969.), it has been modified two or three times to improve its accuracy. We have already begun to take advantage of recent advances in numerical analysis to make some further improvement. No command is added to the vocabulary unless the algorithm used is good, if not the best. The implementation of some commands has been delayed, e.g., GAMMA, partly because a satisfactory computing algorithm is not available. All of this is intended neither to unduly frighten the user nor to make hir ver- confident. There are those who approach the computer with blind faith. There are th-^e who have extreme skepticism. There is a middle road where the computer can be used sensibly and very effectively. 38 4. FOR MORE EFFECTIVE USE OF OMNI TAB II. 4.1 Self -Teaching. No manual can hope to answer every single question. This manual is certainly no exception. Despite the simplicity of OMNITAB, -users may have many questions. What then? A common practice is to find a neighborhood "expert" and ask him or her the question. This practice has several disadvantages despite its apparent simplicity. It consumes a lot of valuable time, the "expert" may not know the answer, it doesn't help answer the next question, the answer is not always complete and it may not fully sink in. A method that works very effectively is self- teaching. The importance of self-teaching cannot be over- emphasized. It is a useful, inexpensive, simple and often exciting means to clarify the meaning or properties of an instruction. Before using the STOP conmand, examine the LIST OF INSTRUCTIONS in PART D to find an instruction (or a few) which (a) you have not used before, (b) you might want to use in the near future, and (c) one whose meaning is not clear. Then write a short set of instructions to exhibit the meaning of the new instruction and insert this short set just before your STOP command. This will take very little time and will cost practically nothing. For example, from the LIST OF INSTRUCTIONS in PART D it is not clear what the instruction RMS actually does. However, the user can readily find out for himself by using a set of instructions such as: OMNITAB 6/13/70 TEST RMS GENERATE 1.(1.) 5. in column 1 RMS column 1 put in column 2 PRINT columns 1 and 2 STOP By working with integers one can quickly do a few hand calculations to compare with the printed results. Note, the sum of the first n squared integers is n(n+l) (2n+l)/6. If you know that RMS stands for something like root mean square you should be able to figure out exactly what operations the instruction performs. The manipulative instructions are very powerful, yet they are not quite as easy to understand as the arithmetic instructions. One can write a short set of instructions which will help clarify the meaning of several of them at one time. Witness the following set of instructions : OMNITAB 5/28/69 SELF-TEACHING INSTRUCTION SET GENERATE 1.(1.) 10. in column 1 FLIP column 1 into column 2 CENSOR column 1 for 7.0, replace by 2.0, put in col 3 PROMOTE 1 row, column 1 into column 4 MOVE the array in 3,1 of size 6x1 to 2,5 ROW SUM columns 1,2,3 and put in col 6 PRINT columns 1 *** 6 The results of using this set of instructions are: 39 COLUMN COLUMN COLUMN COLUMN COLUMN COLUMN 1.0000000 2.0000000 3.0000000 4.0000000 5.0000000 6.0000000 7.0000000 8.0000000 9.0000000 10.000000 10.000000 9.0000000 8.0000000 7.0000000 6.0000000 5.0000000 4.0000000 3.0000000 2.0000000 1.0000000 2.0000000 2.0000000 2.0000000 2.0000000 2.0000000 2.0000000 2.0000000 8.0000000 9.0000000 10.000000 2.0000000 3.0000000 4.0000000 5.0000000 6.0000000 7.0000000 8.0000000 9.0000000 10.000000 0. 0. 3.0000000 4.0000000 5.0000000 6.0000000 7.0000000 8.0000000 13.000000 13.000000 13.000000 13.000000 13.000000 13.000000 13.000000 19.000000 20.000000 21.000000 Self-teaching is also effective in determining whether an instruction allows certain values for the argument of a function. For example, what happens if you use the instruction ERROR when some of the values in the column are negative? Also, self- teaching is useful in obtaining a full understanding of the instructions which have a comprehensive automatic printing (see section 1.10). Hopefully, this manual will answer the major questions and prove useful. But the user, armed with the LIST OF INSTRUCTIONS and an appreciation of self -teaching, could quickly become an "expert" by continually writing short sets of instructions like the above. The sets of instructions for testing CMNITAB in "Test Problems and Results for OMNITAB II," Ruth N. Varner and Sally T. Peavy, NBS Technical Note 551, U. S. Government Printing Office, should also be of help (see section 5.1). Self-teaching is an effective supplement or even replacement for a manual, but OMNITAB itself can be a useful teacher. If the instruction POLYFIT were used to fit a straight line, the automatic printing would give the coefficients from the straight line fit and also the coefficient (omitting the last term) from fitting just a constant. One could see immediately that the estimate of the constant term is different in the two fits, which dramatizes the fact that the two vectors in the straight line fit are not orthogonal. See PART C for further details. 4.2 A Few Common Errors . Listed below are some comments on some of the more common errors that are made which one should be especially careful to avoid. (a) Incorrect number of arguments. It is a good idea to check the number of arguments in your written instruction against the number of arguments given in the column of notes at the extreme right in the LIST OF INSTRUCTIONS in PART D. (b) Be sure data have been put into the worksheet before using an executable instruction. (c) Check to make sure all arguments are of the right kind: column numbers must not have a decimal point and constants must have a decimal point. Check against the LIST OF INSTRUCTIONS if in doubt. (d) The first command after READ or SET must be spelled correctly and must not be a stored instruction, otherwise it will be treated as data. (e) The use of three asterisks (***) to mean thru in a PERFORM instruction is not allowed. (f) When writing stored instructions, numbers less than one must be written with a zero before the decimal point and numbers which have a decimal point must have a digit to the right of the decimal point. 40 (g) Any INCREMENT or RESTORE instruction must have exactly one more argument (the stored instruction number) than the instruction (except tape commands) referred to and the other arguments must agree in kind. (h) When using the command READ "L" remember to indicate in the first argument the number of data cards that are to be read into the worksheet. 4.3 Combining Sets Of Instructions . Often it is desirable to process several sets of OMNITAB instructions (problems) simultaneously. It is substantially cheaper to process sets of instructions together rather than separately. When sets of instructions are combined, there should be only one STOP command which appears at the end of the last set of instructions. The OMNITAB command must be used as the first card of each set of instructions. The OMNITAB command, see PART C, initializes everything so that each new set is processed independently of the other sets. In particular, if a FATAL ERROR occurs in one set it has no bearing on the execution of another set of instructions. 4.4 Use Of FORTRAN Formats. OMNITAB provides considerable flexibility for entering and printing data without using formats. The regular PRINT instruction prints data in a readable form with the decimal point in a fixed position. The number of significant digits printed is easily changed from 8 to any other desired number. The instruction can be modified by preceding it with either the instruction FIXED or the instruction FLOATING. If only one row at a time is to be printed, one can use ABRIDGE. To print arrays or matrices one can use APRINT or MPRINT. In addition, there are a number of commands for improving printing such as HEAD, TITLE, NOTE, PRINT NOTE and SPACE. In addition to this flexibility, there is provision for using regular FORTRAN formats to meet more exacting requirements. The instruction FORMAT "L" ( user's own format) can be used by anyone having a knowledge of a FORTRAN language in conjunction with any of the following commands: READ "L" APRINT "L" CREAD TAPE "L", "L" PRINT "L" MPRINT "L" READ TAPE "L", "L" NPRINT "L" WRITE TAPE "L", "L" ABRIDGE "L" PUNCH "L" There are five commands in the first column for entering and printing data, two in the second column for printing arrays, and three in the third column for magnetic tape operations . The qualifier "L" represents anyone of the first six letters A, B, C, D, E or F. Thus, as many as six different formats ca. 1 , be used at one time. Note, all magnetic tape operation commands have one or two qualifiers. Only those that are used in conjunction with FORMAT "L" have two qualifiers. The first qualifier refers to the tape in use. The second qualifier refers to the FORMAT. Whenever a FORMAT command is used: (i) The FORMAT "L" command must precede (anywhere) the executable command which refers to it. (ii) The qualifier of the executable instruction must agree with the qualifier of the FORMAT instruction. 41 (iii) More than six: formats can be used in any one set of instructions simply by re- using any of the qualifiers in FORMAT "L", but only six; can be used at one time. The master prdgram always uses the last written FORMAT "L". In the FORMAT "L" instruction, a regular FORTRAN format is inserted between parentheses. Usual FORTRAN rules apply, except continuation cards are not allowed. Also, a format should be used for each single card (line) when entering or printing (punching) data. The regular CMNITAB rule that an instruction must be punched on a single card holds for FORMAT "L" instructions also. A discussion of how to construct FORTRAN format statments is beyond the scope of this manual. It is assumed that anyone using the FORMAT "L" command is familiar with the FORTRAN language. A discussion of FORTRAN is found, for example, in "A Primer For FORTRAN IV," E. I. Organick, Addison-Wesley (1966). The FORTRAN I and A format specifications may be used to input data, manipulate data and output data of the same type. However, the E or F format specification must be used for any kind of arithmetic operation. The X and H format specifications may be used as in FORTRAN. The following: commands can be used with data that has been entered using the A or I format specification: DEMOTE, DUPLICATE, EXCHANGE, FLIP, INSERT, MMATVEC, MOVE (and AMOVE or MMOVE), MTRANSPOSE (and ATRANSPOSE) , MVECMAT, ORDER, PROMOTE, SEPARATE, and SORT. However, caution should be exercised with the use of the commands DEMOTE, PROMOTE and SEPARATE as difficulties may be encountered in printing the value zero. 4.5 Organizing A Set Of Instructions . Flow charts are not necessary in writing a set of CMNITAB instructions. Perhaps this frees the problem solver from a rigid approach to a problem. Sometimes it helps to keep a record of how the columns in the worksheet are used and which columns contain what information. This is particularly true if many operations are being performed or if you need added assistance in interpreting a set of instructions some months later. An example of a coding chart is given in NBS Handbook 101, page 261. Sometimes it helps to divide the columns into multiples of ten and use a separate multiple for each different logical unit of computations. Cards which are completely blank are ignored in the execution of instructions or in the interpretation of data (except when using READ "L") . In the printing of the LIST OF COMMANDS, DATA AND DIAGNOSTICS the presence of a blank card causes a blank line to be printed. In a lengthy set of instructions it is sometimes helpful to insert blank cards between logical units (data, arithmetic, printing, etc.) to separate them. Liberal use of descriptive words in writing instructions has many advantages despite the temptation to avoid their use. Punching an instruction tends to flow more smoothly. It is easier to read a set of instructions six months later. It is easier to communicate with someone else. The fact that an CMNITAB set of instructions is often concise makes it possible to use the LIST OF COMMANDS, DATA AND DIAGNOSTICS in a written report, particularly if descriptive words have been used liberally. Although an instruction can be punched anywhere on a card it is usually easiest to start punching in card column 1. If this practice is generally followed, the indenting of instructions from the left, say to card column 6, helps to offset one or more instructions from the rest of the instructions. This can be done for intermediate calculations. Another trick is to use cards of different colors for different units of a set of instructions. Control cards might be punched on one colored card, data on another color, executable instructions on another color, etc. For greater emphasis, one user, in particular, inserts one space between letters and four spaces between words in titles to be printed by CMNITAB, HEAD, TITLE and NOTE instructions. (Don't put a space between letters in a command.) 42 4.6 Some Aids For Writing Sets Of Instructions . (a) Large Amounts of Data. OMNI TAB is basically designed to handle small to moderate amounts of data. However, there are ways of handling large amounts of data. Often, all that is required is to change the shape of the worksheet by using a DIMENSION instruction. This will not be enough if one has more than 12,500 measurements. In this case there are two tricks which are sometimes successful. (i) Enter subsets of data one at a time and perform necessary calculations to obtain partial results. After the last group has been processed, complete any further calculations and print final results. With large amounts of data one often wants the data summarized by groups and this technique can be useful. (ii) Sometimes the data is punched on cards in the form of an array and the size of the array exceeds the size of the worksheet. Furthermore, to obtain partial results entire columns are needed so that it appears necessary to enter the 'entire array. In this case, a simple trick is to reproduce the data deck and enter the data into the worksheet twice. The first time, the first half of the data is read into the worksheet and the second time the remaining half is read into the worksheet. As an illustration consider the following problem and solution. Suppose there are 1000 cards and twenty numbers on each card. The average (mean) and standard deviation of the average are desired for each set of 1000 numbers. The total of 20,000 numbers is too large to go into the worksheet. A way to handle the problem is to first reproduce the data deck. This is often more satisfactory than making two separate runs (passes). Then the following concise set of instructions could be used. The set of instructions appears to be far more lengthy than it really is because a liberal number of comment cards has been used. QMNITAB 6/16/70 compute means and their std. dev's for 20 sets of 1000 values DIMENSION the worksheet to be 1000 rows by 12 columns 1/ SPOLYFIT column 1, weights 1.0, degree 0, x in column 1, put coeffs in col 1 $ S before polyfit is used to suppress automatic printing $ polyfit of degree zero gives mean in row 1 and std dev of mean in row 2 of $ column where coefficients are stored. $ fourth argument is a dummy argument in polyfit of degree zero and can be any $ valid column number. $ note that column where coefficients are stored is the same as that where data $ is stored. This is valid and saves space. $ in this case it is more efficient to use polyfit than statis. 2/ ATRANSPOSE the array in 1,1 size 2x1 and put in 1,11 $ this changes a column into a row 3/ INCREMENT instruction 1 by 1, 0.0, 0, 0, 4/ INCREMENT instruction 2 by 0,0 0,0 1,0 $ we now have results for second set in second row READ data into columns 1 *** 10 $ 1 *** 10 is equivalent to 1,2,3,4,5,6,7,8,9,10 ( follow with data deck ) PERFORM instructions 1 thru 4, 10 times READ data into columns 1***10 and 1 *** 10 $ a column number can be used twice, when 1 is used the second time, the 11th $ column of data is put into column 1 replacing the data $ which was entered there first. ( follow with second copy of data deck ) RESTORE instruction 1 to 1, 1.0, 0, 1, 1 $ this is necessary or the first argument of instr 1 would become illegal 43 PERFORM instructions 1 thru 4, 10 times RESET 20 $ remember nrmax was 1000 PRINT columns 11 and 12 (b) Row Titles. Row titles can be obtained by reading in and printing the titles using an A format, see section 4.4. One column should be allotted for each three characters in the title, including blank spaces. Users of the NBS computer can allot one column for each six characters. To print the coefficients from a quadratic least squares fit, which are stored in column 45, one could use the instructions: FORMAT A (6A3) READ A format, 3 cards into columns 11 *** 16 estimate of a estimate of b estimate of c FORMAT B (1X,6A3,1PE15.6) RESET 3 PRINT B format, columns 11 *** 16 and 45 (c) Data Manipulation. In general, OMNITAB instructions operate on an entire column down to NRMAX as in ADD column 1 to column 2 and put the results in column 3 A number of instructions allow one to operate on only part of a column as in SUM column 1, rows 3 thru 7, put result in column 2 Often, however, one needs to perform an operation on certain rows of a column when the row numbers are only known through some property of the data. For example, one might wish to find the sum of all numbers which have a positive value, but not know the row numbers associated with these numbers. Moreover, the values which are needed might not be in consecutive rows of the column. This sort of problem occurs frequently, but can be resolved easily by a problem solver using a basic technique. The trick is to construct a weight function which is a column of ones and zeros. A one indicates the corresponding value in the data column has a certain property and a zero indicates it does not have that property. In constructing the column of weights one frequently uses the fact that, in OMNITAB, any number divided by itself equals one, except when the number is zero, in which case the result is zero. Suppose we wish to do a statistical anlysis of the even values in column 6, assuming all the numbers are integers. The following set of instructions could be used: DIVIDE column 6 by 2.0, put in column 7 FRACTIONAL part of column 7 put in column 7 DIVIDE column 7 by col 7 and put in col 7 SUBTRACT col 7 from 1.0 and put weights in col 7 STATISTICAL analysis of column 6 using weights in column 7 put in col 41 Often, the CENSOR command is very useful in this type of problem and also the command MATCH. To find the sum of all positive values in column 14, one could use CENSOR column 14 for 0.0, replace by 0.0, store in col 15 SUM col 15 put in column 15 Suppose we have a column of numbers, X, and we need to know the number of values in the column which are less than some constant, k, (or greater than, equal to, etc.] Denote this 44 number by n(X LT k) . This problem arises frequently in one form or another. A solution is given below. First, compute Y = (X-k)/ABS(X-k) , which equals minus one if a value is less than k, equals zero if the value equals k, and equals plus one if the value is greater than k. Then proceed as follows: To find : Perform operations successively on column Y n(X GT k) (i) CENSOR for 0.0, replace by 0.0 (ii) SUM n(X GE k) (i) CHANGE sign (ii) CENSOR for 0.0 replace 2.0 (iii) SUBTRACT 1.0 (iv) SUM n(X EQ k) (i) CENSOR for -1.0, replace 1.0 (ii) SUBTRACT 1.0 (iii) CHANGE sign (iv) SUM n(X LT k) (i) CHANGE sign (ii) CENSOR for 0.0, replace by 0.0 (iii) SUM n(X LE k) (i) CENSOR for 0.0, replace by 2.0 (ii) SUBTRACT 1.0 (iii) SUM There is a tendency to think that the instructions for array and matrix; operations are only of use in problems related to matrix; algebra. However, they can be especially useful in data manipulation and sometimes to remove the need for using stored instructions. Commands like ATRANSPOSE, ADEFINE and MMATVEC are often helpful. As a further note, the instructions APROPERTIES and MPROPERTIES can be used effectively to check calculations and the punching of data cards after data has been entered into the worksheet. (e) Branching. The very nature of OMNITAB makes logical branching seldom necessary or desirable in the usual sense. Often the equivalent of logical branching can be obtained by using a weight function as implied above. In PART C instructions are described for branching in the REPEAT mode. The following is an example of a situation where logical branching is normally required, but is only used indirectly in 'OMNITAB. Suppose we want to take the logarithm to the base ten of the quotient of numbers stored in columns 11 and 12. Except, that if the quotient is less than or equal to zero, we want to replace the logarithm by a constant, say 3.8. These instructions could be used: ANTILOG of 3.8 put in column 10 DIVIDE col 11 by col 12 and put in col 13 CENSOR col 13 for 0.0, replace by col 10, put in col 13 LOGTEN of column 13 is put in column 13 (f) Listing Of Instructions. To avoid the listing of a lengthy set of data or to avoid the printing of arithmetic faults, particularly when it is known that division by zero will happen frequently, one can use the instructions NO LIST or LIST (n) which are described in section Cl.l. 4.7 An Example Of Table Making . The need to form sub-tables from a set of data is common. It is easier to do in OMNITAB than might appear. This is due to the basic structure of the system and the large set of manipulative instructions available. A study of a problem posed by a potential user illustrates some of the things that can be done. Consider the three-dimensional array below, with data in rows, columns and layers: 45 / 7 7 7 I I I / 3 / / / / / 7 / T I I I / 2 Layer / / / / r Row T I T I ~7 / i / / / 12 3 Column The problem is to present a reduced two-way table (rows by columns) having in each cell the mean and standard deviation of the measurements in the three layers. Four solutions are given below for data taken from "An analysis of transformations," G. E. P. Box and D. R. Cox, J. Royal Statist. Soc, B, 26, 223. (1964). The data occurred in a random order. Solution 4 appeared in "CMNITAB - Rapid" Statistical Manipulation," J. R. Rosenblatt, B. L. Joiner and David Hogben, U. S. Bureau of the Census, GE40, No. 6, Final 1970 Census Plans and Four Programming Systems for Computerized Data Retrieval and Manipulation, New York, N.Y., August 21, 1969. U.S. Government Printing Office, Washington, D.C., 1970. People think differently and tend to approach a problem in different ways. It is characteristic of CMNITAB that a problem can be solved in many different ways as is shown here. This is important because it means that the user is free to problem solve in his own way and is not tied to a rigid programming structure. By presenting four different solutions to the same problem, it is hoped the flexibility of approach will be demonstrated. The instructions which enter the raw data into the worksheet are given only once. A few comments are included to aid the reader, but a complete understanding requires a careful study and possibly some use of self- teaching. Solution 4 uses a PERFORM within a PERFORM. Solutions 2 and 3 avoid one PERFORM by using the instruction MATCH. Solution 1 uses the instruction ONEWAY and avoids the use of PERFORM completely. (The instructions MATCH and ONEWAY were not in the system when solution 4 was written.) Solution 2 stores the means in consecutive columns, whereas solution 3 stores the means in consecutive rows of the same column. The outputs are the same for each solution; except the formats differ. Only the output for solution 2 is shown. Some may object to the excessive amount of computing resulting from the use of STATISTICAL analysis or ONEWAY analysis, but the computing time is very small and costs little. The saving in programming effort more than offsets the increase in computing cost unless, of course, one were to use the same set of instructions many times. The NEW PAGE and ERASE instructions in solutions 2, 3 and 4 are only necessary because all four solutions are given in the same set of instructions. 46 Output : 445.33333 271.33333 126.00000 201.83492 64.166450 40.595566 1082.0000 693.33333 331.33333 402.73068 298.82659 111.00150 2940.0000 1068.0000 794.66666 844.85265 501.00299 397.59946 List of Commands : CMNITAB 8/4/70 CONSTRUCT TWO-WAY TABLE OF MEANS AND S.D. 'S SET row numbers in column 1 121232113322111222133331323 SET column numbers in column 2 123331122131322322333211112 SET layer numbers in column 3 323113213232123213232111312 SET data in column 4 292 620 90 442 1140 634 370 338 566 3184 220 1198 170 266 210 332 1022 438 118 360 884 1568 3636 674 2000 1414 1070 I $ begin solution 1 $ first instruction produces numbers 1 to 9 corresponding to each of 9 cells SUBTRACT 1.0 from column 1, multiply by 3.0, add column 2, put in col 5 SONEWAY anal, of col 4, identification in col 5, store in cols 11 *** 14 MTRANSPOSE array in 1,13 size 9x2 to 1,21 APRINT array in 1,21 of size 2x3 SPACE 2 APRINT array in 1,24 of size 2x3 SPACE 2 APRINT array in 1,27 of size 2x3 $ begin solution 2 NEW PAGE ERASE columns 5 *** 62 SUBTRACT 1.0 from col 1, mult by 3.0, add col 2, put in col 5 $ next instr. suppresses printing of arithmetic faults caused by div by zero LIST 1 1/ MATCH col 5 with 1.0, extract from col 4, put in col 11 2/ DIVIDE col 11 by col 11 and put in column 10 3/ SSTATISTICAL anal, of col 11, weights in col 10, store in col 41 4/ INCREMENT instr 1 by 0, 1.0, 0, 1 5/ INCREMENT instr 2 by 1, 1, 6/ INCREMENT instr 3 by 1, 0, 1 PERFORM instrs 1 thru 6, 9 times MOVE array in 9,41 size 1x9 to 4,41 APRINT 3,41 size 2x3 SPACE 2 APRINT 3,44 size 2x3 SPACE 2 APRINT 3,47 size 2x3 $ begin solution 3 NEW PAGE ERASE columns 5 *** 62 LIST 1 SUBTRACT 1.0 from col 1, mult by 3.0, add to col 2, put in col 5 47 1/ MATCH column 5 with 1.0, extract col 4, put in col 6 2/ DIVIDE col 6 by col 6 and put in column 10 STATIS stores mean in row 3 of first storage col (41) 3/ SSTATISTICAL anal, of col 6, weights in col 10, store in col 41 4/ DEFINE 3,41 as 1,7 STATIS stores standard deviation in row 9 of first storage col (41) 5/ DEFINE 9,41 as 1,8 6/ INCREMENT instr 1 by 0, 1.0, 0, 7/ INCREMENT instr 4 by 0,0 1,0 8/ INCREMENT instr 5 by 0,0 1,0 next instruction is necessary, see PART C for definition of MATCH 9/ ERASE column 6 PERFORM instructions 1 thru 9, 9 times next 4 instrs. turn a 9x2 matrix into a 6x3 matrix MMATVEC column 7 into 1,11 size 3x3 MMATVEC column 8 into 1,14 size 3x3 MVECMAT 1,11 size 3x6 into column 20 MMATVEC column 20 into 1,21 size 6x3 MPRINT matrix in 1,21 size 6x3 begin solution 4 NEW PAGE ERASE columns 5 *** 62 next two instructions get data into standard order note, this is the first time -column 3 is used. SORT column 2 and carry along columns 1, 3 and 4 SORT column 1 and carry along columns 2, 3 and 4 1/ MOVE 1,4 size 3x1 to 1,5 2/ SSTATISTICAL analysis of column 5, store in col 41 on 3/ DEFINE Yow 3 of col 41 as row 1 of column 6 4/ DEFINE row 9 of col 41 as row 2 of column 6 5/ INCREMENT instruction 1 by 3,0 0,0 0,0 6/ INCREMENT instruction 3 by 0,0 0,1 7/ INCREMENT instruction 4 by 0,0 0,1 8/ PERFORM instructions 1 thru 7, 3 times 9/ APRINT 1,6 size 2x3 10/ SPACE 1 row 11/ RESTORE instruction 3 to 3,41 1,6 12/ RESTORE instruction 4 to 9,41 2,6 next instr is necessary because we are working with sets of 3 RESET 3 FIXED 4 PERFORM instructions 8 thru 12, 3 times STOP 48 5. THE CMNITAB II PROJECT This section contains some brief notes on the development and management of CMNITAB II which are not directly concerned with the use of CMNITAB II, Sections 5.1 through 5.3 contain a capsule summary of the documentation available to potential users of CMNITAB II. Sections 5.4 and 5.5 contain a few remarks on questions often raised by programmers and managers of computation facilities. Sections 5.6 through 5.10 describe some services, intended to make the system more effective, which are provided by the user-oriented management of the system at the NBS Gaithersburg laboratories. 5.1 Availability Of CMNITAB II . "The CMNITAB II Magnetic Tape and Documentation Parcel", NBS Magnetic Tape 1 (1970) by David Hogben, Sally T. Peavy and Ruth N. Varner is available from (formerly the "Clearinghouse") National Technical Information Service Department of Commerce 5285 Port Royal Road Springfield, Virginia 22151 The complete parcel consists of one reel of magnetic tape and documentation as follows: (a) Magnetic Tape. (16,806 records, 84 characters/record) ( 2,788 records, 84 characters/record) 210 records, 840 characters/record, blocked 10 cards /record) 718 records, 1320 characters/record, blocked 10 lines /record) File 1 contains the main program and subprograms of the CMNITAB II system. The test problems (File 2), which are sets of CMNITAB instructions, are designed as bench marks for use in the implementation of the system. XREF (File 3) consists of FORTRAN comment statements which provide a guide for implementing CMNITAB II. File 4 is the output obtained by using the test problems on the NBS computer. The magnetic tape was prepared on a certified 2400 foot reel in BCD mode, 556 bpi density, even parity, and 7-track. Tapes will be generated by NTIS in other modes, other densities, even or odd parity, and 7 or 9-track, if so requested. File 1. CMNITAB Master Program c File 2. Test Problems ( File 3. XREF ( File 4. Test Results ( (b) Documentation 1. Source Listing Of CMNITAB II Program. Sally T. Peavy, Ruth N. David Hogben. NBS Special Publication 339 (1970), 371 pages; $< Varner , and .75. A Systems Programmer's Guide for Implementing CMNITAB II. Sally T. Peavy, Ruth N. Varner, and Shirley G. Bremer. NBS Technical Note 550 (1970), 43 pages; 50 cents. 49 3. Test Problems and Results for CMNITAB II. Ruth N. Varner and Sally T. Peavy. NBS Technical Note 551 (1970), 190 pages; $1.50. 4. CMNITAB II User's Reference Manual. David Hogben, Sally T. Peavy and Ruth N. Varner.- NBS Technical Note 552 (1971), 262 pages; $2.00. The publications listed in the documentation are for sale separately by the Superintendent of Documents U. S. Government Printing Office Washington, D.C. 20402 The first publication should be ordered by SD Catalog No. C13.10:339. For the last three publications, order by SD Catalog No. C13. 46:550, C13. 46:551 and C13. 46:552, respectively. Computers were used, almost exclusively, to prepare all the above four publications. The main sections of Special Publication 339 and Technical Note 551 are actual computer output which was computer assisted phototypeset. The main part of Technical Note 550 and some of the examples in PART C of this manual were put on magnetic tape and then printed by a computer terminal. A 12 pitch IBM 2741 terminal with ^ spacing was used, from start to finish, to prepare this manual and the introductions to the other three publications. An ATS text-editing system was used to go from one draft to another. Most of the text, by far, was printed using a . 10 pitch Delegate element (035) and reduced 16%. In some of the formulas other typing elements were used (Delegate (070), 10 pitch Symbol (061) 12 pitch Symbol (004) and Prestige Elite (012)). A few of the formulas were typed separately on a conventional typewriter. Some of the actual computer output in the examples was reduced 25%. 5.2 CMNITAB II Master Program . The CMNITAB II master program consists of 177 ANSI FORTRAN subprograms. A complete listing of the program is available in NBS Special Publication 339 listed in section 5.1. Considerable effort has been made to make OMNITAB II as machine independent as possible. In addition to restricting the writing of subroutines to the ANSI FORTRAN language, several additional steps have been taken. We exclude, to the best of our knowledge, any statements which are permissible in ANSI FORTRAN, but which are not acceptable in any computing system which might use OMNITAB. In the internal use of alphabetical information, the word length has been restricted to three characters. The length of a printed page line has been restricted to 120 characters. 5.3 Implementation Of OMNITAB II . Because of the size of the CMNITAB II program, it requires a large computer. It has been implemented on at least five different makes of computers (e.g., IBM 360/50 up, GE 625, CDC 3800 and 6600, Burroughs' 5500, and UNIVAC 1108). Since considerable effort has been made to make CMNITAB as machine independent as possible, implementation should have minimal difficulties. The implementation of OMNITAB, however, still remains a task for a systems programmer . The major problem in implementing OMNITAB relates to the size of the system. Overlay and/or segmentation are necessary with most computer systems and probably desirable with the largest computers or with computers using a time-sharing system. On most computers the overlay problem is more or less solved. The publication "A Systems Programmer's Guide to OMNITAB II," described in section 5.1, should be helpful for the implementation of CMNITAB. OMNITAB has been successfully implemented on several different computers without the aid of this publication. The present version, Version 5.0, is more readily adaptable and together with the above documentation, a systems programmer should not have too much difficulty. 50 5.4 Oper at ing' Mode . There has been much discussion in the computing literature concerning the pros and cons of batch processing, remote batch processing and time -sharing.' Although the discussion is important, it is somewhat irrelevant as far as the implementation and use of OMNITAB is concerned. This manual describes a version of QMNITAB designed for use in the batch processing mode. However, the very nature of CMNITAB is such as to make it readily adaptable for time-sharing or remote batch processing. A time sharing version was developed by Walter J. Gilbert and K. B. Weiner for the University of Maryland. A similar version is in operation at the University of Rome, Italy. International Telecommunications Network, Inc. adapted an earlier version of QMNITAB for use in the remote batch processing mode. 5.5 Efficiency . The efficiency of a computer program 1ms long been a subject of interest. Actually, efficiency lias only a limited meaning, except when the entire scientific effort is considered. The developers of CMNITAB have been primarily concerned with the efficient and accurate use of the computer to solve scientific problems, and to a lesser extent with the computing efficiency of a particular subprogram. Although the emphasis has been on developing accurate subprograms or subprograms which make the use of- CMNITAB easier, indications are that CMNITAB is quite efficient in the use of computer time. 5.6 Development Of CMNITAB II . The basic spirit and philosophy of CMNITAB remains virtually the same as it was eight years ago. However, it is in a continual state of development. New commands and new features are frequently added to the system. Existing commands are often revised, and improved. There are a few commands in the original CMNITAB that remain to be implemented in QMNITAB II. Some of these commands have been superseded by new commands, the rest we hope to implement soon. The current version contains many commands which were unavailable three years ago. ' 5.7 Comments From Users . During the past two years 75 comments from NBS users have been responded to in a semi- formal manner. The comments have been valuable and have led to the addition of new commands and several improvements in existing commands. It is essential that a highly user-oriented system like CMNITAB be responsive to users' needs. Consequently, comments from users have been encouraged as much as possible. 5.8 Notices. For users of the NBS computer only, a notice appears at the end of the LIST OF COMMANDS, DATA AND DIAGNOSTICS which describes the changes made in the current version of , OMNITAB. Each notice begins with *** WATSNU IN VERSION X.XX ***, where X.XX is the current version number. This procedure replaces the command WATSNU of the original CMNITAB. In. this way users are kept informed of the latest developments. A similar procedure could easily be adopted at other computer centers. 5.9 Newsletters . To supplement manuals and the notices, newsletters are distributed to users of the NBS commputer describing recent developments in the CMNITAB system. Included in the newsletters are descriptions of new instructions, modifications of existing instructions, errors detected and corrected, novel uses of instructions, comments by users, etc.. 5.10 Recorded Telephone Messages . The Computer Services Division records messages giving the current status of the NBS operating system. OMNITAB news may be given at the end of a message. The purpose of these 51 messages is to provide users with the very latest information before the computer is used. Any difficulties will be reported as soon as they are detected. The" current message is obtained by dialing extension 3261. 52 PART C DESCRIPTIONS OF INSTRUCTIONS Explanations are given on how to use each instruction; Examples are given to further illustrate the use of a particular instruction or group of instructions. Examples are tutorial and are not necessarily given to solve a particular problem. Synonyms and abbreviations are not treated separately, but are listed under the principal instruction. Each principal instruction is enclosed in a rectangular box. If an instruction has more than one form, each optional form is enclosed in a trapezoidal box. Comments pertaining to a group of instructions may appear at the beginning of a section or subsection. Within each subsection, instructions are listed alphabetically. The commands appear alphabetically under the subsection title. Diagnostics (section B3) which may be printed by a particular instruction are included in the description of that instruction. Diagnostics which may be printed by any one of a particular group of instructions are given in the general description of the group at the beginning of the section. Diagnostics which are applicable to a large number of instructions are not discussed. Instructions are grouped into ten sections which are further subdivided into subsections. Thus, anyone interested in printing, for example, can immediately turn to the appropriate subsection(s) to find which instructions can be used. A capsule summary showing the commands in each section is given on the next two pages. Commands to suppress automatic printing (section B1.10), abbreviations (section B1.12) and synonyms (section B1.13) are not listed. Section 11 contains an index. See section B1.2 and the beginning of PART D for a description of the notation used to define the arguments of an instruction. 1. Entering And Printing Data 2. Arithmetic Operations 3. Data Manipulation 4. Statistical Analysis 5. Numerical Analysis 6. Repeat Mode 7. Array Operations 8. Matrix Operations 9. Bessel Functions 10. Thermodynamic s 11. Index To Commands Described In PART C 53 List Of Commands 1. Entering and Printing Data. Control instructions: OMNITAB STOP miscellaneous: DIMENSION SCAN NULL DUMMY "L" listing: LIST NO LIST Entering data: SET READ GENERATE Printing data: PRINT ABRIDGE NPRINT to modify: FIXED FLOATING FLEXIBLE Detailed printing: HEAD NEW PAGE SPACE notes: NOTE N0TE1 NOTE 2 PRINT NOTE •page titles: TITLE1 TITLE2 TITLE3 TITLE4 Plotting: PLOT PAGE PLOT TITLEX TITLEY Printing arrays .matrices APRINT MPRINT APRINT "L" MPRINT "L" Punching cards: PUNCH PUNCH "L" Format: FORMAT "L" read with format: READ "L" print with format: PRINT "L" ABRIDGE "L" NPRINT "L" Magnetic tape, set: SET TAPE "L" CSET TAPE "L" read from tape: READ TAPE "L" READ TAPE "L", "L" read with count: CREAD TAPE "L" CREAD TAPE "L", "L" write onto tape: WRITE TAPE "L" WRITE TAPE "L", "L" manipulations : SKIP TAPE "L" ENDFILE TAPE "I II REWIND TAPE "L" BACKSPACE TAPE "L" 2. Arithmetic Operations. Simple arithmetic: ADD SUBTRACT MULTIPLY DIVIDE power : SQUARE SORT RAISE change sign: ABSOLUTE CHANGE logarithms : LOGTEN LOGE antilogs: ANTILOG EXPONENTIAL NEGEXPONENTIAL Trigonometric: SIN COS TAN COT degrees : SIND COSD TAND COTD inverse: ASIN ACOS ATAN ACOT degrees: ASIND ACOSD ATAND ACOTD hyperbolic: SINH COSH TANH COTH inverse: ASINH ACOSH ATANH ACOTH Data summarization: INTEGER FRACTIONAL ROUND ACCURACY sum: SUM PARSUM ROW SUM product : PRODUCT PARPRODUCT EXPAND properties : AVERAGE RMS MAXIMUM MINIMUM Complex arithmetic: CADD CSUBTRACT CMJLTIPLY CDIVIDE change coordinates; CPOLAR CRECTANGULAR 3. Data Manipulation. Defining operations: RESET RESET "V" COUNT DEFINE ERASE Moving data: MOVE DUPLICATE PROMOTE DEMOTE EXCHANGE CLOSE UP SEPARATE INSERT Manipulative: FLIP CENSOR SHORTEN sort: ORDER SORT HIERARCHY search: MATCH SEARCH SELECT 54 4. Statistical Analysis. Elementary: FREQUENCY HISTOGRAM NHISTOGRAM RANKS Analysis: STATISTICAL ONEWAY TWOWAY Regression: POLYFIT FIT CORRELATION Probability: F PROBABILITY UNIFORM RANDOM 5. Numerical Analysis. Error functions: ERROR CERF Special integrals: ELLIPT FIRST ELLIPT SECOND STRUVE ZERO STRUVE ONE Polynomials: HERMITE LEGENDRE LAGUERRE NORMLAGUERRE Chebyshev: TCHEBYSHEV UCHEBYSHEV Iteration: ISOLATE ISETUP ITERATE Analysis: INTERPOLATE SOLVE MAXMIN HARMONIC Integration: GAUSS QUADRATURE 6. Repeat Mode. Repeated execution: PERFORM INCREMENT RESTORE alternative: BEGIN FINISH Branching : COMPARE IFEQ IFNE two arguments: IFGE IFGT IFLE IFLT 7. Array Operations. Arithmetic: AADD ARAISE ASUBTRACT AMULTIPLY ADIVIDE Define, move operations: AERASE ADEFINE AMOVE ATRANSPOSE Properties: AAVERAGE ACOALESCE APROPERTIES 8. Matrix Operations. Defining operations: MDEFINE MERASE MIDENTITY Moving operations: MMOVE MDIAGONAL MTRANSPOSE MVECDIAGONAL MMATVEC MVECMAT Matrix algebra: MADD MSUBTRACT mul t ipl icat ion : MMULTIPLY MRAISE MSCALAR MKRONECKER M(AD) M(DA) M(AV) M(V'A) M(X'X) M(XX') M(X'AX) M(XAX') Matrix analysis: MINVERT MTRIANGULARIZE MORTHO MEIGEN MPROPERTIES 9. Bessel Functions. First, second of order 0,1: BJZERO BJONE BYZERO BYONE modified: BIZERO BIONE BKZERO BKONE extreme argument: EX I ZERO EXIONE EXKZERO EXKONE Complex, angle=PI/4: KBIZERO KBIONE KBKZERO KBKONE extreme real argument: KEXIZERO KEXIONE KEXKZERO KEXKONE arbitrary angle: CIZERO CIONE CKZERO CKONE extreme real argument: CEIZERO CEIONE CEKZERO CEKONE Zeros: ZEROS BJZERO ZEROS BJONE Order n, integral BESIN BESJN BESKN INTJO 10. Thermodynamics. Units, temp, conversion: SI CGS FTOC CTOF Molecular weight, ATOMIC MQLWT PARTFUNCTION properties of state: BOLDIST EINSTEIN PFTRANS PFATOMIC 55 1. ENTERING AND PRINTING DATA 1.1 Control Instructions . DDffiNSION, DUMMY "L", LIST, NO LIST, NULL, GMNITAB, SCAN, STOP This changes the dimensions of the worksheet from 201 rows and 62 columns to the specified number of rows and columns. The product of the number of rows and number of columns must not exceed 12,500. The instruction DIMENSION 500x30 would be illegal. The instruction is usually used only when one wishes to perform a few calculations on a large set of data, e.g., DIMENSION 1000 x 12, or perform a lot of calculations on a small set of data, e.g., DIMENSION 10 x 1000. The DIMENSION instruction is best put immediately after the GMNITAB instruction and should never be put in the middle of a set of instructions as it changes the entire configuration of the worksheet and could cause a value in one column to end up in some other column. If the product 'r)x(c) exceeds 12,500; the following fatal error will occur: *** DIMENSIONED AREA EXCEEDS LIMIT The command DIM is allowed as an abbreviation for DIMENSION. This command was added to the system to allow users to add their own subroutines. The use of DUMMY "L" requires an extensive knowledge of the internal structure of OMNI TAB and the command is not discussed any further in this manual. The instruction LIST with an argument (n) controls the printing of diagnostics in the LIST OF COMMANDS, DATA, AND DIAGNOSTICS according to the value of the integer n as follows: 0. Print nothing. LIST is synonymous with NO LIST; see below. 1. Suppress the printing of arithmetic diagnostics only. 2. Suppress the printing of informative diagnostics only. 3. Suppress nothing. LIST 3 is synonomous with LIST (see below). 4. Suppress the printing of both arithmetic and informative diagnostics. As soon as a fatal error occurs, the effect of using NO LIST or LIST (n) is changed to LIST for the remainder of the set of instructions. LIST 1 (or LIST 2) is particularly useful when it is known that a large number of diagnostics will occur and one does not want to have them printed. For example, in data manipulation, it is common to divide numbers by themselves to obtain a column of weights. If some of the numbers are zero, arithmetic diagnostics will result which may be numerous if 56 instructions are stored. These diagnostics can be avoided by using LIST 1 before the DIVIDE command. (LIST could be used right after DIVIDE, if further diagnostics are needed.) If the argument of LIST is less than zero or greater than four, the following informative diagnostic is given: * THIS COMMAND WAS NOT EXECUTED BECAUSE ITS MEANING WAS QUESTIONABLE / J I LIST all diagnostics / / / The command LIST without an argument is used to negate LIST (n) or NO LIST, see below, and all subsequent instructions and diagnostics are printed. The instruction LIST is not printed, however. All instructions and data which appear after this card are not printed in the LIST OF COMMANDS, DATA AND DIAGNOSTICS until the instruction is countermanded by LIST, see above, or until a fatal error occurs. The instruction only affects the listing of instructions. The most common use of NO LIST is just before READ to avoid the printing of a large set of data. NO LIST is synonomous with LIST described above. NULL This instruction does nothing. It can be used as a stored instruction to erase an existing stored instruction which is no longer needed. This must be the first instruction of any set of instructions. All information on the card is printed on each page. The information is printed in positions 21 through 100 on the first printed line of each page. Hence, this instruction can be used to supply the date and title for each set of instructions. More extensive titles can be printed as described in section 1.4. The word PAGE and the page number is printed in positions 111 through 118. OMNITAB initializes a set of instructions as follows: (1) Each entry in the worksheet is set equal to zero. (2) NRMAX is set equal to zero. (3) The worksheet is dimensioned to have 201 rows and 62 columns. (4) The variables V, W, X, Y and Z are set equal to zero. (5) All stored instructions are destroyed. (6) If it is not the first in a series of sets of instructions, it signals the end of the previous set of instructions and causes the LIST OF COMMANDS, DATA, AND DIAGNOSTICS to be printed. (7) The values of the fundamental physical constants are set in the SI system. (8) The argument of LIST (n) is set equal to 3. (9) The argument of SCAN (c) is set equal to 80. (10) All FORMATS are removed. (11) The command PRINT is set in normal mode (readable printing) . (12) All TITLES are erased. (13) All NOTEs are erased. 57 Caution: Since NRMAX is set equal to zero, data must be entered (e.g., using READ, SET or GENERATE) before any executable instruction is used (e.g., ADD, STATIS or M INVERT) . Non- executable instructions (e.g., NULL, FORMAT etc.) and stored instructions may precede the entry of data. If an executable instruction is used before NRMAX is reset, the following FATAL ERROR will occur (in most cases) : *** NRMAX=0 Normally, all 80 columns of a Hollerith card are examined in OMNI TAB. However, if certain information, particularly numbers, at the end of a card is to be ignored then the SCAN (c) instruction can be used to do this.. For example, if data in card columns 73 through 80 are to be ignored by the computer use SCAN 72. The information although not scanned will, however, be printed in the LIST OF COMMANDS. If the SCAN instruction has more than one argument, the following informative diagnostic will be given: * MORE THAN ONE ARGUMENT IN COMMAND. ONLY FIRST ONE IS USED This could happen, for example, if the card containing SCAN 72 had a number in card columns 73-80. This must oe the last card at the end of the last set of instructions. It signals the end of the use of CMNITAB and returns control of the computer to the executive system. It causes the last LIST OF COMMANDS, DATA AND DIAGNOSTICS to be printed. Forgetting to use a STOP card is the major cause of not having a list of commands printed. 1.2 Entering Oata Into The Worksheet . GENERATE, READ, SET. Data on caids following the READ or SET instructions may appear anywhere on the card and either with or without a decimal point. Data must be separated by a space, comma or word (non-numeric characters). Integers less than -8191 must be punched with a decimal point. Each of these commands may affect the value of NRMAX. If the number of rows required to enter data into the worksheet exceeds NRMAX, then NRMAX will be automatically reset to agree with the new number of rows. The value of NRMAX is never decreased by these instructions. If fewer than NRMAX rows of data are entered into the worksheet, the numbers in the remaining rows of the worksheet remain unchanged. Comments are allowed on data cards. Consequently, the first command after data cards must be spelled correctly. Otherwise, the card will be mistaken for a data card. Also, if a comment is at the beginning of a card, it should not be one of the CMNITAB commands or it will be treated as an instruction card. In each of these commands, the following informative diagnostic will be given if an attempt is made to enter too much data into the worksheet: * TOO MUCH DATA IN SET, READ OR GENERATE, SPILL LOST Stored instructions should not immediately follow data cards used by a READ or SET instruction becuase instruction numbers may be interpreted as data. 58 Other forms of READ and SET are described in sections 1.7 and 1.10. GENERATE from (K) in steps of (K) to (K) in steps of (K) to (K) ... in col (C) This instruction generates a sequence of numbers with differences specified by the even arguments in the instruction. To enter the consecutive numbers 11 through 20 in column 30, one could use the instruction GENERATE 11.(1.) 20. in column 30 Here, the parentheses are used in the usual mathematical context. Note, the number of arguments in the instruction must be even and at least 4. The even arguments which determine the step size can be positive or negative, but not zero. The instruction GENERATE 1. (l.)10. (-l.)l. in column 32 could be written GENERATE 1. (l.)10. (l.)l. in column 32 since the context dictates that the second step size must be negative. (In this instruction the decimal points are not needed since the form of the instruction dictates that all arguments except the last are constants.) The difference between any tiro arguments on both sides of a step size should be an integral multiple of the step size, indicating the number of steps to be taken. For example, in GENERATE ll.(2.)21. IN COL 42, 21.-11. = 10. = 2(increment)x5(steps) . If such is not the case, the last increment will not equal the designated step size. In the instruction GENERATE ll.(2.)21.7 into column 42 the numbers 11., 13., 15., 17., 19., 21. and 21.7 would be put in column 42. The last number generated always equals the number on the right of the step size in the instruction. READ data on following cards into columns (C) , (C) . . . , (C) row by row The data on the cards which follow are read into the specified columns, one row at a time. Each card contains the data for one row. The numbers on the first card go into row 1 of all the specified columns; the numbers on the second card go into row 2, etc. This continues until a valid instruction is encountered or until the columns are completely filled. (1) If any card is partially complete, zeros are entered in the remaining columns. Blank cards are ignored as usual. (2) The value of NRMAX is increased, if necessary, to agree with the number of cards read. (3) Any extra numbers on a card are ignored. (4) Stored instructions should not immediately follow the data cards. 59 If NRMAX = 2: READ data into columns 41, 42 and 43 11 12 13 21 22 23 24 31 32 would cause NRMAX to -be reset to 3; and the numbers 11.0, 12.0 and 13.0 to be put in row 1 of columns 41, 42 and 43 respectively; the numbers 21.0, 22.0 and 23.0 to be put in row 2 of columns 41, 42 and 43; and the numbers 31.0, 32.0 and 0.0 to be put in row 3 of columns 41, 42 and 43. Only three column numbers are given in the READ instruction, so the fourth number on the second card, 24, is ignored. Since there are only two numbers on the third card, the third number is set equal to zero. If NRMAX had been 5 originally, it would not be decreased to 3. The value of NRMAX is increased, if necessary, but never decreased by the READ instruction. The numbers on the following card(s) are put into the rows of the specified column. The first number is put into the first row, the second number into the second row, etc. until a valid instruction is encountered. The SET instruction is similar to the READ instruction, except SET can only be used for one column at a time and the number to be put in a row does not have to be put on a separate card but can follow the previous number on the same card. Consequently, many numbers can be punched on a few cards and it is often preferable to use SET when entering data into just a few columns. As in READ, the value of NRMAX is increased if necessary. Also, stored instructions should not immediately follow the data. If there are fewer numbers on the card than the value of NRMAX, the remaining numbers in the column are unchanged. For example, if NRMAX =5 and column 27 contains the numbers 11.0, 12.0, 13.0, 14.0 and 15.0, then the result of using SET into column 27 31 32 33 would be to put the numbers 31.0, 32.0, 33.0, 14.0 and 15.0 in the first five rows of column 27. I J I SET the data on the following cards, starting with row (R) of column (C) / / / The SET instruction with two arguments performs exactly like the SET instruction with one argument described above, except the entering of data begins with row (R) instead of row 1. All the rows before (R) remain unchanged. If NRMAX = 5 and column 27 contains the numbers 11.0, 12.0, 13.0, 14.0 and 15.0, then the result of using SET data into row 3 of column 27 33 34 35 36 would be to put the numbers 11.0, 12.0, 33.0, 34.0, 35.0, and 36.0 in column 27. NRMAX would be reset to 6. Note, if R = 1, this instruction is equivalent to the SET instruction with only one argument. 1.3 Common Printing Instructions . ABRIDGE, FIXED, FLEXIBLE, FLOATING, NPRINT, PRINT. The basic command for printing data in the worksheet is PRINT, which simply prints columns of data in "readable form", a feature unique to OMNITAB II. Numbers in a column are 60 printed with the decimal point in a constant position determined by the values of the data in a column. Traditional forms of printing are possible by using either of the commands FIXED or FLOATING. Methods of obtaining detailed printing are described in section 1.4. Optional forms of the printing commands are described in section 1.6. ABRIDGE row (R) of columns (C) , (C) , ... (C) Whereas PRINT causes an entire column to be printed, the command ABRIDGE prints only a single row. The command is often useful in the repeat mode for printing results for each iteration. Since only one row is printed, all of the features of PRINT are unavailable; except numbers are still printed in "readable form" unless FIXED or FLOATING has been used. If rows are printed successively, the decimal points will not necessarily line up as would be the case with PRINT. FIXED with (d) digits after the decimal point Command forces any of the commands ABRIDGE, APRINT, MPRINT, NPRINT, or PRINT, which follow, to print numbers in a column with exactly (d) digits after the decimal point. The command remains in effect until countermanded by either FLEXIBLE or FLOATING (or another FIXED). The single argument (d) must be an integer between and 8, inclusive. If not, (d) is set equal to 8. FLEXIBLE to return to readable printing Removes the effect of using either FIXED or FLOATING. It returns the operation of ABRIDGE, APRINT, MPRINT, NPRINT and PRINT to the normal mode of printing numbers in "readable form". No arguments are used in the instruction. The command OMNI TAB automatically puts FLEXIBLE into effect. Forces the commands ABRIDGE, APRINT, MPRINT, NPRINT, and PRINT to print numbers using the scientific notation or floating-point form. The argument (s) determines the number of digits printed. It must be an integer between 1 and 8, inclusive. If not, (s) is set equal to 8. Numbers are automatically rounded to the specified number of digits. A floating-point number is one which has been normalized to be a number, greater or equal to one but less than ten, times the suitable power of ten. Each number consists, in order from left to right, of (i) blank spaces, (ii) a minus sign if the number is negative and a blank space if the number is zero or positive, (iii) the first significant digit, (iv) the decimal point, (v) (s-1) digits after the decimal point, (vi) a plus or minus sign of the power of ten needed to multiply the lormalized number to obtain the number in usual form, and (vii) two digits giving the power of ten. The total number of characters, including blanks, is 15. Let the letter b denote a blank space. If s=6, the number -762.89357 would by printed as bbbb-7. 62894+02 Some computers may put the letter E before the sign as in bbb-7.62894E+02. 61 / J I FLOATING with eight significant digits / / / The command without an argument is synonomous with the above command with the argument (s) automatically set equal to 8. The letter N (for no new page) before PRINT implies the command (a) does not start printing on a new page and (b) ignores all HEAD column commands (see section 1.4). If the number of columns to be printed exceeds 8, columns are printed in blocks of 8 (or less). The entire NRMAX rows are printed before proceeding to the next block. A blank line is inserted between blocks. If NRMAX is less than or equal to 48, rows are printed in blocks of five with a blank line between each block. If NRMAX exceeds 48, rows are printed in blocks of ten. In all other respects NPRINT works like PRINT. All NRMAX values in a column are printed in "readable form" unless FIXED or FLOATING is in effect. All numbers are printed with 8 significant digits. (See section 1.6 for other possibilities.) (1) If NRMAX is less than or equal to 48, rows are printed in blocks of five with a blank line between blocks. If NRMAX exceeds 48, rows are printed in blocks of ten. (2) The word COLUMN and the column number are printed two lines above each column. For an alternative, see discussion of HEAD in section 1.4. Fifteen positions (1%") are needed for each column. At most 5 columns will fit on %h x 11" paper. COLUMN starts in position 4. (3) Printing always starts on a new page. (4) If there are three or more consecutive zeros at the bottom of a column, the zeros are not printed. (Blank spaces are supplied.) If every value in a column is zero, the entire column will be blank and no column heading will be supplied. This feature enables users to space columns of data apart, if desired. (5) Zero is printed as 0., rather than 0.000000+00. (6) If the number of arguments exceeds 8 , columns are printed in blocks of 8 (or less) . The instruction PRINT columns 1 *** 19 would give the same results as the three instructionr. PRINT columns 1 *** 8 PRINT columns 9 *** 16 PRINT columns 17 *** 19 (7) If the range of the numbers in a column is too large to enable all numbers to be printed in "readable form", then some of the numbers will be printed in floating-point form. To emphasize this condition, an asterisk (*) is printed on the left of floating-point numbers. If there are 3 or less orders of magnitudes, all numbers will be printed in "readable form". 62 1.4 Detailed Printing . HEAD, NEW PAGE, NOTE, NOTE1, NOTE2, PRINT NOTE, SPACE, TITLE1, TITLE2, TITLE3, TITLE4 The commands in this section provide added flexibility in the printing of results, particularly in the generation of reports. The commands N0TE1, N0TE2, and PRINT NOTE are associated and are described jointly. Similarly, the commands TITLE1, TITLE2, TITLE3, TITLE4 are described jointly. Only the commands in this section have a numeral in the command. Care should be used in using these commands as experience shows that attempts to provide special printing are prone to errors. If a dollar sign ($) (see section B1.5) is any one of the characters in any of the instructions in this section, it does not stop scanning of the rest of the card. It is treated like any other character. A dollar sign ($) in an instruction indicates that the phrase which follows is a descriptive aid to the user and is not used by the instruction. HEAD column (C)/ $ the 12 characters after / are used as column heading Tiie 12 characters immediately following the slash (/) are used as a column heading in place of the usual 12 character heading "COLUMN (C) " provided by OMNITAB. All characters (including blanks) described in section B1.15 are counted. The command can be used to provide headings for any of the commands FIT, PLOT, POLYFIT or PRINT. In the PRINT command, three blanks appear on the left and the column heading appears on the right at the top of each column. In the plot command, the column heading will follow ORDINATE and ABSCISSA. The column heading will also be used by the commands FIT and POLYFIT in the title and data headings. Any characters after the 12th character, following the slash, will be ignored . The HEAD command may be used in conjuction with the first two optional forms of PRINT described in section 1.6. It can not be used with a PRINT "L" instruction. The column heading will be ignored and no diagnostic will be given. The headings may be updated at any time by using a new HEAD instruction. Only 50 HEAD commands are allowed at any one time. The use of additional HEAD instructions wipes out the original ones to the extent that an excess number of headings is used. The 51st HEAD instruction destroys the 1st, the 52nd destroys the 2nd and so on. If more than 50 HEAD instructions are used, the following informative diagnostic is given * MORE THAN 50 HEAD COLUMN COMMANDS HAVE BEEN USED. The command HEAD cannot be stored for repeated execution. If it is included in a set of stored instructions, the instruction is carried out at the time it is first encountered and is then deleted from the set of stored instructions. The following informative diagnostic is given: * COMMAND NOT ALLOWED IN THE REPEAT MODE. EXECUTED BUT NOT STORED. If the instruction is punched incorrectly, e.g., column number or slash is omitted, the instruction is ignored and the following informative diagnostic is given: * BAD HEAD. COLUMN GT 50 OR NO / (The diagnostic GT 50 should be NUMBER INCORRECT.) 63 Assures printing will start on a new page. The command can be used with any of the print commands which do not otherwise start printing on a new page: ABRIDGE, ABRIDGE "L" APRINT, APRINT "L", MPRINT, MPRINT "L", NPRINT, and NPRINT "L" One blank space should follow the command NOTE. The characters following NOTE through card column 80, including the blank, are printed immediately. This instruction allows additional details in printing. It is mainly used in conjunction with SPACE and ABRIDGE. It may also be used with ABRIDGE "L", APRINT, APRINT "L", MPRINT, MPRINT "L", PLOT (at bottom of page) , PRINT, PRINT "L" and any of the commands which provide a comprehensive automatic printing of results (see section B1.10). The command NOTE must not be stored. However, the command PRINT NOTE, which executes N0TE1 and NOTE2, (see below) can be stored for repeated execution. NOTE1 $ next 60 characters are stored for printing first half of note : N0TE2 $ next 60 characters are stored for printing second half of note : PRINT NOTE : The commands N0TE1 and N0TE2 are automatically stored and are not executed until the command PRINT NOTE is used. The commands may be used together to give a note occupying a full page line (120 characters) . Either or both of the commands may be revised at any time by simply writing a new instruction (s) . The commands can not be stored for repeated use. However, the command PRINT NOTE, which executes the commands NOTE1 and NOTE2, may be stored. One blank space should follow the command N0TE1. This is not necessary for N0TE2. For NOTE1 and/or N0TE2, the first 60 characters after the numeral 1 or 2 are stored for later printing. If less than 60 characters are used, blanks are supplied at the end. Actually, only 59 characters of NOTE1 are printed; 60 of N0TE2. The two-word command PRINT NOTE simply causes the information in the instructions NOTE1 and NOTE2 to be printed immediately. It is similar to NOTE; except it can provide a longer note and can be stored for repeated use. If NOTE1 has not been used, the 60 characters after NOTE2 will appear on the right hand half of the printed line and the first half will be blank. Similarly, if NOTE2 has not been used, the 60 characters after N0TE1 will appear on the left half of the line and the right half will be blank. 64 SPACE (p) lines on printed page The specified number (p) of blank lines appear on a printed page. This command is used chiefly in conduction with any of the commands ABRIDGE, ABRIDGE "L", APRINT, APRINT "L", MPRINT, MPRINT "L", NOTE, NPRINT, NPRINT "L", and PRINT NOTE. The command SPACE has no effect on any command which starts printing on a new page; such as PLOT, PRINT and PRINT "L". If (p) is omitted, one blank line will be printed. TITLE1 $ next 60 characters printed on first half of second line : TITLE2 $ next 60 characters printed on second half of second line : TITLE3 $ next 60 characters printed on first half of third line : TITLE4 $ next 60 characters printed on second half of third line : The four commands TITLE1, TITLE2, TITLE3, and TITLE4 provide a two line title which appears on each page immediately after the first printed line containing "OMNITAB" and "PAGE". Any or all of the instructions may be used. The 60 characters, including blanks, after the numeral (1, 2, 3 or 4) are saved. Any or all of the instructions may be revised by simply writing a new instruction. A title may be deleted by using an instruction (s) with 60 blanks after the command. If a TITLE number is punched incorrectly, the following informative diagnostic is given: * IMPROPER TITLE NUMBER, ASSUMED 1 The TITLE instructions can not be stored for repeated use. If an instruction is numbered, the following informative diagnostic is given: * COMMAND NOT ALLOWED IN THE REPEAT MODE. EXECUTED BUT NOT STORED 1.5 Plotting Data . PAGE PLOT, PLOT, TITLEX, TITLEY There are two commands, PAGE PLOT and PLOT, which enable the user to plot data using the high speed printer. The two commands are essentially the same; except PLOT uses all 120 spaces of a printed line, whereas PAGE PLOT uses only 72 spaces on any line. Hence, a PAGE PLOT will fit on an 8h x 11 piece of paper. Each of these- commands has five different forms which control the scale of the vertical and/ or horizontal axes. The commands TITLEX and TITLEY, described jointly, enable the user to supply his own titles on the horizontal and vertical axes respectively. Each plot has 51 positions vertically and 101 positions horizontally. On each scale plus signs are printed at every tenth position (left and right, top and bottom) . Minus 65 signs are printed in the other positions. Six values are printed along each axis at equal intervals. Floating-point numbers with 5 digits are used. If zero is on a scale, an X is printed in the proper position. At the top of each plot, a short description is given of the columns plotted. The same column headings used by PRINT are given for ABS- (abscissa) and ORD- (ordinate), i.e., "COLUMN (C)" if a HEAD instruction has not been used or the heading if a HEAD instruction lias been used. In addition, the plotting symbol (s) used are printed. In each option any number of columns (functions) from one to five can be plotted against the single abscissa. Plotting symbols are assigned as follows: Column Plotting Symbol 1st 2nd * 3rd + 4th 5th Where two or more symbols would coincide, a digit showing the actual number of points is printed rather than any one of the above symbols. If 10 or more points coincide, then an X is printed. In the first option, the user does not liave to be concerned about the scales. Both the vertical and horizontal scales are automatically determined by the instruction. The program determines the largest and smallest values and uses these values as the extreme values of each scale. If more than one function is plotted, the program finds the largest and smallest values of all columns combined. The remaining four options provide the user with flexibility in choosing scales which often improve the appearance of the plot. If a scale is determined by the user, it may happen, accidently or intentionally, that some values fall outside the specified range and cannot be plotted. In this case a diagnostic is printed at the top of the plot showing the number of points plotted and the number which fall outside the bounds. Two lines are available at the bottom of a plot for printing additional information. Often one or two of the commands TITLEX, NOTE or ABRIDGE are used. The PAGE PLOT instructions are listed, but are not described as they closely resemble the corresponding PLOT instructions below. The only difference is PAGE PLOT has 61 plotting positions on the horizontal scale instead of 101. Scale values are printed at the 0th, 20th, 40th, and 60th positions. However, the commands TITLE2, TITLE3 and TITLE4 are ignored by the command PAGE PLOT. : PAGE PLOT columns (C) , (C) , ... (C) against column (C) : / / / PAGE PLOT cols (C) ... (C) , with vertical scale from (K) to (K) , against col (C) / / _____/ / / / PAGE PLOT cols (C) ... (C) against col (C) with horizontal scale from (K) to (K) / / / 66 / / PAGE PLOT cols (C) . . . (C) vertical (K) to (K) vs col (C) horizontal (K) to (K) / / J I PAGE PLOT cols (C) . . . (C) vs col (C) , horizontal (K) to (K) , vertical (K) to (K) / / / Page 68 shows an example of the use of the PAGE PLOT instruction. The plot shows S straight lines, y = a+bx, with a = 4, 9, 16, 25 and 36; b = 2, 3, 4, 5 and 6; and x = 0. (l.)100.. This example of PAGE PLOT has been used to illustrate what happens when points fall out of bounds. Consecutive digits have been used in TITLEX and TITLEY to show exactly where the characters appear on the plot. The actual set of instructions used was: OMNITAB 11/27/70 EXAMPLE OF PAGE PLOT GENERATE 0. (1.0) 100. IN COLUMN 1 1/ ADD 2.0 TO COL 1, MULT BY 2.0, ADD 0.0, STORE IN COL 11 2/ INCREMENT 1 BY 1.0, 0, 1.0, 0.0, 1 PERFORM INSTRUCTIONS 1 THRU 2, 5 TIMES TITLE1 PAGE PLOT OF FIVE STRAIGHT LINES USING 5TH. OPTION TITLE3 Y = A+BX, A=4,9,16,25,36 B=2,3,4,5,6 X=0 (1)100 TITLEX 34567890123456789012345678901234567890123456789012345678901234567890 TITLEY 34567890123456789012345678901234567890123456789012345678901234567890 PAGE PLOT COLUMNS 11 12 13 14 15 VS COL 1 0.0 TO 60.0, 0.0 TO 250.0 PLOT columns (C) , (C) , (C) against column (C) Both the horizontal and vertical scales are determined by OMNITAB. The instruction is easy to use and requires no thought in planning. The options below provide more flexibility. / / PLOT columns (C) / (C) , with vertical scale from (K) to (K) , against col (C) 7 / This option is identical to the first; except the range of the vertical scale (ordinate) is chosen by the user rather than by the instruction. The scale does not have to be increasing, i.e., the first (K) , which specifies the value at the bottom of the plot, can be greater than the second (K) , which specifies the value at the top of the plot. The following is a valid instruction: PLOT column 41 from 10.0 to -10.0 versus column 14 Page 69 shows an example of the use of the second form of the PLOT instruction. The functions sine, cosine, tangent and cotangent (see section 2.4) are plotted for x = -5.0(0.1)5.0. The actual set of instructions used was: OMNITAB 11/27/70 EXAMPLE OF PLOT GENERATE -5.0 (0.1) 5.0 IN COLUMN 10 SIN OF COLUMN 10 PUT IN COLUMN 1 COS OF COLUMN 10 PUT IN COLUMN 2 TAN OF COLUMN 10 PUT IN COLUMN 3 COT OF COLUMN 10 PUT IN COLUMN 4 PLOT COLUMNS 1, 2, 3, AND 4 FROM -1.0 TO 1.0 VS COLUMN 10 67 OMNITAB 11/27/70 EXAMPLE OF PAGE PLOT PAGE 1 PAGE PLOT OF FIVE STRAIGHT LINES USING STH. OPTION ABS- COLUMN 1 ORD- COLUMN 11 01, COLUMN 12 (*) , COLUMN 13 (+) , COLUMN 14 (,), COLUMN 15 (-), NO. OF PTS. PLOTTED 263 NO. NOT PLOTTED [OUT OF BOUNDS) 242 3 2.5000+02+ 4 5 6 7 8 9 1 2 3 2.0000+02+ 4 5 6 7 8 9 1 2 3 1.5000+02+ 4 - - 5 - - 6 7 - - , ++ O _ _ - 4- ** + + + + + + + + AA * AA AA * AA AA + A* + AA + * AA 9 1 2 3 1.0000+02+ 4 5 6 7 A AA AA AA AA A AA AA 9 .-++** ... ../+** 1 --,+*... 2 --,+**.. 3 5.0000+01+ -,++**... + 4 - , + * .. 5 --,+**... 6 --,+** .. 7 --,++*... 8 -,+**.. 9 -+**... -+ * .. 1 -AA 2 -..' 3 0.0000 X x 0.0000 2.0000+01 4.0000+01 6.0000+01 345678901234567890123456789012345678901234567890123456789012 68 03 I 8 -J w o o u " 5fe S" 69 / ~~ —J I PLOT cols (C)...(C) against column (C) with horizontal scale from (K) to (K) / / . / Here, the range of the horizontal scale (abscissa) is selected by the user and the vertical scale is determined by the instruction. / ~ ~ " ~~T I PLOT cols [C)...CC) vertical (K) to (X) vs col (C) horizontal (K) to (K) / / _ . / Here, both the vertical scale and the horizontal scale are selected by the user. / ' 7 / PLOT cols (C)...(C) vs col (C) , horizontal (K) to (K) vertical (K) to (K) / L / This option is a slight modification of the preceding ODtion. The only difference is that the four arguments, which specify the vertical and horizontal scales, appear at the end of the instruction. Warning : unlike the previous instruction, the two arguments which specify the horizontal scale come before the two arguments which specify the vertical scale. : TITLEX. $ 60 characters after 2nd space following X are printed horizontally : TITLEY $ 51 characters after 2nd space following Y are printed vertically Two spaces should follow either command. The dollar sign ($) in the instruction indicates that the information which follows is for the aid of the user and is not part of the instruction. The 60 characters following the second space after the X of TITLEX will be printed, centered, below the horizontal axis (x-axis or abscissa) on every subsequent page printed by PLOT or PAGE PLOT. The 51 characters following the second space after Y of TITLEY will be printed vertically to the left of the vertical axis (y-axis or ordinate) of any subsequent plot. Note, TITLEX allows the use of 60 characters, but TITLEY only allows the use of 51 characters. Either instruction may be revised at any time by simply rewriting the instruction. The TITLEX and TITLEY instructions must not be stored for repeated use. If they are stored (numbered), the instruction is performed when it is first encountered and then deleted from the set of stored instructions. As is the case with the other TITLE instructions (section 1.4), an informative diagnostic is given. 1.6 Optional Forms Of Readable Printing . ABRIDGE, NPRINT, PRINT The basic forms of ABRIDGE, NPRINT and PRINT were described in section 1.3. For each of these commands there are five additional forms. The options are described below for PRINT, But are merely listed for ABRIDGE and NPRINT. The first two options of each instruction are fairly simple. They simply change the number of digits printed from 8 to the specified number. The last three options provide considerable flexibility at the expense of simplicity. They are not recommended for the beginner. A liberal amount of self-t ching (section B4.1) should help in understanding how to use these options effectively. 70 The first two options are closely related; actually, the first option is a simple form of the second option. Also, the last three options are closely related; the third and fourth options being special cases of the fifth option. The last three options are described jointly. The HEAD command is ignored by the last three options. None of the five options can be used if FIXED or FLOATING is in effect. If FIXED or FLCATING has been used by mistake, the following informative diagnostic is given: * THIS COMMAND WAS NOT EXECUTED BECAUSE ITS MEANING WAS QUESTIONABLE Each option has an argument which specifies the number of digits to be printed. If the number exceeds 8, it is automatically reset to 8, but no diagnostic is given. If the argument is less than 1, it is automatically reset to one, but no diagnostic is given. / 7 I ABRIDGE row (R) of columns (C) , (C) , ... (C) with (K) significant digits / / / / 7 I ABRIDGE row (R) of (C) ... (C) with (K) s. digits, (C) ... (C) with (K) , etc. / / I I 7 I ABRIDGE row (R) , (K) cols, (C) (s) , (C) (s) , etc. $ max width 22, 3 blanks / / I I 7 I ABRIDGE row (R) , (K) cols, (C) (s) (m) max width, (C) (s) (m) , etc. $ 3 blanks / / / / 7 I ABRIDGE row (R) of (K) cols, (C) (s) (m) (b) blanks, (C) (s) (m) (b) , . . . / / __/ / 7 I NPRINT columns (C) , (C) , ... (C) with (K) significant digits / / I I 7 I NPRINT columns (C) . . . (C) with (K) s. digits, (C) . . . (C) with (K) s. digits etc. / / / / " ~~ 1 / NPRINT (K) cols, (C) with (s) s.d., (C) with (s) , etc $ max width 22, 3 blanks / / I I ' " 7 I NPRINT (K) cols, (C) with (s) s.d. and (m) max width, (C) (s) (m) etc $ 3 blanks / / _^ / 71 / 7 I NPRINT (K) cols, (C) with (s) s.d. (m) max width (b) blanks, (C) (s) (m) (b) etc / / / / 7 I PRINT columns (C) , (C) , ... (C) with (K) significant digits / / / This instruction is the same as the normal PRINT instruction; except the number of significant digits in each value of each column is changed from 8 to (K) . Although the argument (K) represents a mathematical integer, it must be written with a decimal point to avoid being mistaken for a column number. It can be any of the values 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, or 8.0. If (K) is not an exact integer, it is truncated to an integer, but no diagnostic is given. For example, if K=2.3, K is automatically reset to 2.0. / 7 I PRINT columns (C) . . . (C) with (K) s. digits, (C) . . . (C) with (K) s. digits, etc. / / / This is a special case of the option above. Here, the number of significant digits printed can vary from one column (or group of columns) to another. / 7 I PRINT (K) cols, (C) with (s) s.d., (C) with (s) , etc $ max width 22, 3 blanks / / I I 7 I PRINT (K) cols, (C) with (s) s.d. (m) max width, (C) (s) (m) , etc. $ 3 blanks / / I I 7 I PRINT (K) cols, (C) with (s) s.d. (m) max width (b) blanks, (C) (s) (m) (b) , etc / / / These three options allow the user to change the width of a column and the number of blank spaces between columns, in addition to varying the number of digits printed. In each case the first argument, (K), specifies the number of columns to be printed. In the last option the argument (K) is followed by (K) sets of four arguments. Hence, the total number of arguments in an instruction is (4K+1) . The arguments in each set, all integers, are: (C) - the number of the column to be printed. (s) - the number of digits to be printed. (m) - the maximum width of a column, excluding blanks on the left. (b) - the number of blank spaces to appear at the left of the column. In the fourth option, the fourth argument of a set, (b) , is missing and it is automatically set equal to (assumed to be) 3. Here, we have a total of (3K+1) arguments. In the third option, both of the arguments (m) and (b) are missing. Automatically, (m) is set equal to 22 and (b) is set equal to 3. The argument (b) allows the user to provide different spacings between columns. The meaning of the argument (m) can be easily misunderstood. It is not the actual column width, but rather the maximum width that the user will tolerate. The actual width 72 may be smaller. Each column of data is examined to determine how many spaces are needed to print all the numbers in the column in "readable form", i.e., without using floating-point notation. For example, suppose s=4, NRMAX=2 and the numbers in column 7 are: -76.24 .001593 then 9 spaces would be needed. Two spaces are needed for the sign and the decimal point. Two spaces are needed on the left of the decimal point (for the largest number in absolute value) and six places are needed after the decimal point (for the smallest number in absolute value). In this example, if the maximum width (m)=10, the actual width would be 9. On the other hand, if (m) were less than 9, the actual width would be the minimum width required to print the numbers in floating-point form; in this case 9. The value of (m) should always be greater than or equal to (s)+5. When numbers are printed in floating-point form, the first blank space is used to print an asterisk. In a normal PRINT instruction: (s)=8,. (m)=13 and (b)=15 minus actual width. In the last three options, the normal column heading "COLUMN (C) " is used if the column width is at least 12. If the width is less than 12, but greater than 6, the column number (C) is printed, but the word "COLUMN" is omitted. If the column width is less than 6, no column heading is given. Additional flexibility is provided in the last two options by allowing the user to print numbers in either floating-point, fixed or integer form. Values of the arguments (s) and (m) should be set as follows: Argument Floating-point Fixed Integer (s) number of digits . no. of decimal places (m) -m -(m+1) To obtain numbers in fixed or integer form, (m) should be large enough so that the largest number can be printed in the allotted space. Asterisks are not printed when floating-point numbers are requested. When numbers are printed as integers, a single blank space appears on the right. An example is given below. Suppose the numbers -1.2345678, 12.345678, 123.45678, and 1234.5678 are in row 1 of columns 31 through 34 and NRMAX=1. The instruction: PRINT 4.0 cols 31, 8, FLOATING 32, 4, -13 FIXED 33, 8, 22 READABLE 34, 0, -9 INTEGER would give the following result. Digits are printed under the result so that the reader can see how many blank spaces are printed and where they are located. OMNITAB 11/24/70 TEST PRINT OPTION COLUMN 31 COLUMN 32 33 34 -1.2345678+00 12.3457 123.45678 1235 123456789012345678901234567890123456789012345678901234567 The fourth option has been used, so (b)=3. The total column widths, including blanks, are 16, 16, 13, and 12. (The total width is 57.) Note, the word COLUMN does not appear above columns 33 and 34 because the widths, excluding blanks, are only 9 and 10 respectively. 73 1.7 Formatted Printing And Reading . ABRIDGE "L", FORMAT "L", NPRINT "L", PRINT "L", READ "L" For added flexibility, these commands are available for printing and reading data according to the user's own format. They are intended for use by anyone with a knowledge of the FORTRAN language. Their use is not recommended for the novice. See section B4.4 for a discussion of the use of formats. Six; additional commands are described in sections 1.8, 1.9 and 1.10. Each instruction with a qualifier "L" must be preceded by the corresponding command FORMAT "L". If the qualifiers do not agree, the following fatal error occurs with READ "L": *** FORMAT NOT FOUND and the following informative diagnostic appears with any print command: * FORMAT NOT FOUND. READABLE FORMAT IS USED. The HEAD instruction described in section 1.4 is ignored when printing according to a specified format. The options described in section 1.6 are unavailable. Remark . .When a format is used, values for all column numbers are either read or printed. This means that the format may pertain to more than one card or line. For example, for the instructions FORMAT A (20F4.0/20F4.0/5F4.0) READ A 9 cards into cols 1 *** 45 (27 cards) the data on card 1 would go into columns 1-20, the data on card 2 would go into columns 21 - 40 and the data on card 3 would go into columns 41 - 45. The remaining 24 = 3x8 cards would be read in a similar manner. Note, the first argument of the READ A instruction is 9 not 27. ABRIDGE "L" format, row (R) of columns (C) , (C) ...(C) Print the designated row of the indicated columns according to the indicated format. FORMAT "L" ( ) : Put regular FORTRAN format specification inside the parentheses. The format specification can not be continued onto the next Hollerith card. Also, the format should specify only one line of printing. NPRINT "L" format, columns (C) , (C) , ... (C) This command bears the same relation to PRINT "L" (below) that NPRINT does to PRINT. Printing does not start on a new page. 74 PRINT "L" format, columns (C) , (C) , ... (C) Prints in accordance with the specified format. Printing starts on a new page. Most of the special features of PRINT are not available. READ "L" format, (n) cards into columns (C) , (C) ... (C) One card is read, in accordance with the specified format, for each row of the indicated columns. Note carefully, this command has one more argument than READ. The first argument determines how many cards are to be read. Note, the data cards after READ "L", unlike READ, are not listed in the LIST OF COMMANDS, DATA AND DIAGNOSTICS. Unlike READ, READ "L" may be used in the repeat mode. Data to be entered into the worksheet should immediately follow the external (unnumbered) PERFORM which executes the READ "L" command. Extreme caution should be used (see section B2.5) when READ "L" is stored for repeated use. 1 . 8 Printing Arrays And Matrices . APRINT, APRINT "L", MPRINT, MPRINT "L" The commands in this section permit one to print data in any part of the worksheet as long as the rows and columns are consecutive. Printing does not have to start with row 1 and one can print from beloiv NRMAX. Although the array and matrix operation commands are described in sections 7 and 8, the printing commands are described here. Each of the four instructions has four arguments. The first two arguments determine the location of the array (or matrix) in the worksheet by specifying the row-column location of the value in the upper left-hand corner of the rectangular array. The last two arguments determine the size of the array (or matrix) by giving the number of rows and number of columns. Each of the four commands causes printing to start where the last printing ended and does not start printing on a new page. For the commands APRINT "L" and MPRINT "L", see section 1.7 for further discussion on the use of formats. The HEAD command is ignored by all four of the commands described here. An error in any one of the four arguments, which defines an array (matrix) that will not fit in the worksheet, will produce the following fatal error: *** DEFINED MATRIX OVERFLOWS WORKSHEET The commands APRINT and MPRINT are similar, but have a few minor differences. The commands APRINT "L" and MPRINT "L" are synonomous. APRINT the array in (R) , (C) of size (r)x(c) Printing is according to "readable form" unless FIXED or FLOATING is in effect. No headings are supplied. If the number of columns (c) exceeds 8, the array is printed in blocks of 8 columns C or less), A space is inserted between each block. 75 Print the specified array in accordance with the prescribed FORMAT "L" MPRINT differs from APRINT in two respects. First, numbers are printed in readable form only if every number in the matrix can be printed without using floating-point notation. If the range in the magnitudes of the values forces some values to be printed in floating-point form, then all numbers are printed in floating-point form. Second, row/column number headings are provided as in the example which follows. Since space is required for headings, the matrix is printed in blocks of seven (or less) rather than 8. Suppose, in columns 41 to 44, the numbers 11 to 14 are in row 6, the numbers are in row 7 and the numbers 31 to 34 are in row 8. Then the instruction 21 to 24 MPRINT 6,41 size 3x4 would yield ROW/COL 6 7 41 11.000000 21.000000 31.000000 42 12.000000 22.000000 32.000000 43 13.000000 23.000000 33.000000 44 14.000000 24.000000 34.000000 : MPRINT "L" format, the matrix in (R) , (C) of size (r)x(c) MPRINT "L" is a synonym for APRINT "L". 1.9 Punching Data Onto Cards . PUNCH, PUNCH "L" Data can be punched onto cards using either of the above commands. PUNCH data in columns (C) , (C) (C) onto Hollerith cards Provides NRMAX cards with numbers punched according to floating-point notation with seven significant digits. A maximum of four columns can be punched at one time. If more columns are needed, PUNCH "L" should be used. The first column of data punched appears in the first 15 card columns, the next column of data in card columns 16 to 30, and so on up to a maximum of 60 card columns. Each field of 15 characters constists of (i) three blanks, (ii) a minus sign if the number is negative, otherwise an additional blank, (iii) the first significant digit, (iv) the decimal point, (v) the last six significant digits, (vi) a plus or minus sign denoting sign of the exponent of 10, and (vii) two digits giving the power of ten. The commands FIXED and FLOATING govern the operation of PUNCH. 76 Data in the specified columns is punched according to the indicated format. Unlike the command PUNCH, this command allows the punching of more than four columns. 1.10 Use Of Magnetic Tapes . BACKSPACE TAPE "L", CREAD TAPE "L", CREAD TAPE "L" "L", CSET TAPE "L", ENDFILE TAPE "L", READ TAPE "L", READ TAPE "L" "L", REWIND TAPE "L", SET TAPE "L", SKIP TAPE "L", WRITE TAPE "L", WRITE TAPE "L" "L" Each tape' operation command has two words and at least one qualifier. The second word is always the word TAPE. The qualifier, see section B1.16, is always any one of the six letters A, B, C, D, E, or F (without quotation marks) and refers to the tape unit being used. If there are two qualifiers, the first qualifier refers to the tape unit and the second qualifier refers to the corresponding FORMAT "L". Five of the instructions use the argument (n) records. Here, a record is 80 characters or one complete Hollerith card image. If the tape unit specified is anything other than one of the letters A through F, the following fatal error occurs: *** INCORRECT TAPE UNIT. COMMAND IS NOT EXECUTED If two qualifiers are used and the instruction FORMAT "L" with the same qualifier has not been used before, then the following fatal error occurs with input commands (read, set): *** FORMAT NOT FOUND and the following informative diagnostic is given with the WRITE TAPE commands: * FORMAT NOT FOUND. READABLE FORMAT IS USED. (See section 1.7. ) As in section 1.2, input instructions (CREAD TAPE, CSET TAPE, READ TAPE and SET TAPE) may affect the value of NRMAX. Mien using tape operation commands with the NBS computer an ASG control card must be used for tape assignment. Users of other computers should check with their computer services staff to find out what control cards are needed, if any. The ASG card must appear immediately after the RUN card (see section B1.4). It has the form 8WS ASG "L" or 8WS ASG "L"=USERTP where "L" is the appropriate tape unit (one of the letters A through F) and USERTP is the name (six; characters) or number of the magnetic tape reel which is to be used. If the second form is not used, then a scratch tape is used. The option W, after the multiple 7-8 punch, permits tape writing. The option S indicates that the tape is to be saved. The following commands may not be used in the REPEAT MODE (see section B2.5): CREAD TAPE "L", CSET TAPE "L", READ TAPE "L", and SET TAPE "L". When incrementing tape operation commands, which have been stored, the first qualifier (tape unit) should be incremented by zero (without a decimal point) . BACKSPACE TAPE "L" unit, (n) records This instruction backspaces tape "L" by (n) physical tape records. 77 CREAD TAPE "L" unit, using (n) records, into columns (C) , (C) , ... (C) Tliis command is similar to the READ TAPE "L" command; except the value (n) specifies the number of records to be read instead of terminating input with a record of zeros as in READ TAPE "L". CREAD TAPE "L" "L" unit and format, using (n) records, into cols (C) ... (C) Similar to command above; except a FORMAT "L" is referenced. CSET TAPE "L", using (n) records, into column (C) This command is similar to the SET TAPE command (see below). Here, the indicated number of records is read, whereas the SET TAPE command reads data until a record of zeros is encountered . / 7 I CSET TAPE "L" unit, using (n) records, into row (R) of column (C) / / / Similar to above command; except data is entered into row (R) and below rather than starting with row 1. ENDFILE TAPE "L" unit This instruction writes anend-of-file mark on the specified tape, "L". The use of the instruction is highly recommended, if the tape is to be reused. READ TAPE "L" unit into columns (C) , (C) ... (Q This command is similar to the ordinary READ command; except data is read from the specified tape unit rather than from cards. Reading of data continues until a record of zeros is encountered; not a blank record. READ TAPE "L" "L" unit and format into columns (C) , (C) , ... (C) Same as above; except tape is read using the specified format. REWIND TAPE "L" unit The tape specified by "L" is rewound to the beginning of the tape position. 78 SET TAPE "L" unit into column (C) This command is similar to the SET command; except data is read from the specified tape unit rather than cards. Reading of data continues until a record of zeros is encountered; not a blank record. / J I SET TAPE "L" unit starting with row (R) of column (C) / / / Same as above; except first datum is entered into row (R) instead of row 1. SKIP TAPE "L" unit, forward (n) records The specified tape "L" is moved forward (n) physical records. WRITE TAPE "L" unit from columns (C) , (C) ... (C) This command is similar to the PUNCH command; except data is recorded on magnetic tape rather than cards. Each card image, as in PUNCH, is set up as an output record on the tape. NRMAX records are written as usual and in addition a record of zeros is written at the end. As in PUNCH, the maximum number of arguments (column numbers) is four. WRITE TAPE "L" "L" unit and format, from columns (C) , (C) ... (C) Same as above; except records are written according to the referenced format. 79 2. ARITHMETIC OPERATIONS . This section describes the instructions for: performing simple aritlimetic, the use of logarithms, computing trigonometric functions, data summarization, and performing complex aritlimetic. Many of these instructions can produce aritlimetic diagnostics. See section B3.3 for further details. None of the instructions in this section have any effect on the value of NRMAX. Be sure that data has been entered into the worksheet by using one of the instructions described in section 1. 2.1 Simple Aritlimetic (3 Arguments) . ADD, DIVIDE, MULTIPLY, RAISE, SUBTRACT Each of these commands has three arguments. The first two arguments may be either constants or column numbers. The third argument is always a column number. ADD (E) to (E) and put results in column (C) Performs the indicated addition, row by row. DIVIDE (E) by (E) and put the results in column (C) If division by zero is attempted, the result is set equal to zero and the following arithmetic diagnostic is given: ** DIVISION BY ZERO, RESULT SET=0, (n) TIMES The command DIV is an acceptable abbreviation of DIVIDE. MULTIPLY (E) by (E) and put the results in column (C) Performs indicated multiplication. The command MULT is an acceptable abbreviation of MULTIPLY. RAISE (E) to (E) and put in column (C) Either of the first two arguments can be negative, zero or positive. However, if _ the first argument is less than zero and the second argument is not an integer, or if the first argument is zero and the second argument is negative and not an integer, the exponent is set equal to zero, the result is set equal to one , and the following arithmetic diagnostic is given: ** NEGATIVE ARGUMENT TO SQRT, LOG OR RAISE 80 The instruction RAISE -2.0 to -3.0 and put in column 45 is valid and puts -1/8 into column 45. But the instruction RAISE -2.0 to -3.5 and put in column 45 would produce the above arithmetic fault and diagnostic. Remember, zero raised to any power is zero and any non-zero value raised to the zero power is one. (Also, 1.0 raised to any power is 1.0.) RAISE can produce numbers which are too big (overflow) or too small (underflow) . Let El and E2 be any values specified by the first two arguments. If E2 is a positive integer, then the absolute value of El raised to E2 must not exceed the largest number allowed in the computer (i.e., about 10 38 for the NBS computer). Otherwise, overflow will occur. If E2 is not an integer and El is positive, overflow will also occur when E2xlog(El) exceeds 88.0. If E2 is an integer greater than or equal to 60, then El must be positive. SUBTRACT (E) from (E) and put in column (C) Carefully note the use of "from" in the instruction which indicates the direction of the subtraction. The instruction SUBTRACT the value 4.0 from 7.0 and put in column 26 would put the value 3.0 into column 26, whereas the instruction SUBTRACT the value 7.0 from 4.0 and put in column 26 would put the value -3.0 into column 26. The command SUB is an acceptable abbreviation of SUBTRACT. 2.2 More Simple Arithmetic . ABSOLUTE, CHANGE, SORT, SQUARE The instructions in this section do not have three arguments. ABSOLUTE, SORT and SQUARE have two arguments. The first argument can be either a column number or a constant. The second argument is always a column number. CHANGE lias a variable number of arguments, which are all column numbers. ABSOLUTE value of (E) put in column (C) All values are made positive (non-negative) and put in the designated column. If any value is positive or zero, it remains unchanged. If any value is negative, it is multiplied by -1.0 to make it positive. The command ABS can be used as an abbreviation of ABSOLUTE. CHANGE the sign of values in columns (C) , (C) ... (C) This command has the effect of multiplying each designated column by -1.0. Hence, the instruction CHANGE the sign of columns 17, 36 and 48 81 would be equivalent to the three instructions MULTIPLY 17, -1.0, 17 MULTIPLY 36, -1.0, 36 MULTIPLY 48, -1.0, 48 Note, this is the only instruction in section 2 which can perform an operation on several columns simultaneously. [See section B2.8 for a complete list of similar instructions.) All the arguments in this instruction are column numbers. Note also, that the results are put back into the designated columns and not into new columns. SQRT of (E) put in column (C) Computes the square root [SQRT) of a number or column of numbers. If any number is less than zero, the result is set equal to zero and the following arithmetic diagnostic is given: ** NEGATIVE ARGUMENT TO SQRT, LOG OR RAISE The instruction SQRT of 25.0 put in column 7 would put the value 5.0 into each row of column 7 and is equivalent to the (more complicated) instruction RAISE 25.0 to the 0.5 power and put in column 7 SQUARE of (E) put in column (C) Multiplies the first argument by itself. The instruction SQUARE column 1 and put in column 2 is equivalent to both of the instructions MULTIPLY 1, 1, 2 and RAISE 1, 2.0, 2 2.3 Logarithms, Exponentiation . ANTILOG, EXPONENTIAL, LOGE, LOGTEN, NEGEXPONENTIAL Each of these commands has two arguments. The first argument can be either a constant or a column number. The second argument is always a column number. ANTILOG of (E) put in column (C) This is the inverse function of LOGTEN, below. If y = log 10 (x), then x is the anti logarithm of y. 82 EXPONENTIAL of (E) put in column (C) Computes e x , for x = (E) . (The value of x may be negative.) The command EXP can be used as an abbreviation of EXPONENTIAL. If any value of x exceeds 88.0 (in NBS UNIVAC 1108 computer), overflow occurs. The result is set equal to zero and the following diagnostic is given: ** EVALUATION OF EXPONENT PRODUCES OVERFLOW The EXPONENTIAL instruction can be considered the antilogarithm (to base e) of LOGE (below) . LOGE of (E) put in column (C) Computes the natural logarithm or logarithm to the base e. If an attempt is made to- compute the natural logarithm of zero or a number less than zero, the result is set equal to zero and the following arithmetic diagnostic given: ** NEGATIVE ARGUMENT TO SQRT, LOG OR RAISE The command LOG is an acceptable abbreviation for LOGE. It should not be mistaken as an abbreviation for LOGTEN. LOGTEN of (E) put in column (C) Computes the common logarithm (logarithm to the base ten) . If any value is less than or equal to zero, the result is set equal to zero and the following arithmetic diagnostic given: ** NEGATIVE ARGUMENT TO SQRT, LOG OR RAISE NEGEXPONENTIAL of (E) put in column (C) Similar to the EXPONENTIAL instruction above; except the exponent is -(E). The instructions EXPONENTIAL of -3.6 put in column 54 and NEGEXPONENTIAL of 3.6 put in column 54 are equivalent. 2.4 Trigonometric Functions . COS , COT , SIN , TAN COSD, COTD, SIND, TAND ACOS , ACOT , AS IN , ATAN ACOSD, ACOTD, ASIND, ATAND COSH, COTH, SINH, TANH ACOSH, ACOTH, ASINH, ATANH - Radians - Degrees - Inverse in radians - Inverse in degrees - Hyperbolic - Inverse hyperbolic 83 The basic trigonometric functions available are cosine (COS) , cotangent (COT) , sine (SIN) and tangent (TAN). There are five additional variations of each basic command. If the argument of a trigonometric function is in degrees, the letter D is appended to the command. For the evaluation of the inverse trigonometric functions, the letter A must precede and be attached to the command. The letter H appended to a command will indicate that the hyperbolic function is requested. The following three arithmetic faults are possible in the execution of these instructions: ** ARGUMENT OUT OF BOUNDS TO INVERSE FUNCTION ** ARGUMENT TOO LARGE FOR SIN OR COS, ZERO RETURNED (n) TIMES ** TRIG FUNCTION NOT DEFINED RESULTS SET=0, (n) TIMES The NBS computer (UNIVAC 1108) bound for cos(x), cot(x), sin(x) and tan(x) is |x| < 10 7 . Each instruction has two arguments. The first argument can be either a constant or a column number. The second argument is always a column number. In the descriptions below, let x be a number determined by the first argument in an instruction and let y by the corresponding number in column (C) . Here, log is used to imply log to the base e. ACOS of (E) put in column (C) The principal. value (between and tt/2 radians) of arc cosine is computed; y = cos" (x), ACOSD of (E) put in column (C) The principal value (between and 90 degrees) of arc cosine is computed. ACOSH of (E) put' in column (C) Computes the inverse hyperbolic cosine; y = log{x + /(x 2 - 1)}. ACOT of (E) put in column (C) The principal value (between -tt/2 and +tt/2 radians) of arc cotangent is computed; y cot _1 (x). ACOTD of (E) put in column (C) The principal value (between -90 and +90 degrees) of arc cotangent is computed. ACOTH of (E) put in column (C) Computes the inverse hyperbolic cotangent of (E) ; y = ^log{(x+l)/ (x-1)}. 84 ASIN of (E) put in column (C) The principal value (between and tt/2 radians) of arc sine is computed; y = sin-'(x). ASIND of (E) put in column (C) The principal value (between and 90 degrees) of arc sine is computed. ASINH of (E) put in column (C) Computes the inverse hyperbolic sine of (E) ; y = log{x + /(x 2 + 1)}. ATAN of (E) put in column (C) The principal value (between -tt/2 and +tt/2) of arc tangent is computed; y = tan _1 (x). ATAND of (E) put in column (C) The principal value (between -90 and +90 degrees) of arc tangent is computed. ATANH of (E) put in column (C) Computes the inverse hyperbolic tangent of (E) ; y = %log((l+x)/(l-x)) . COS of (E) put in column (C) Computes the cosine of angle (s) in radians; y = cos(x). COSD of (E) put in column (C) Computes the cosine of angle (s) in degrees. COSH of (E) put in column (C) Computes the hyperbolic cosine of (E) ; y = h(e + e ), COT of (E) put in column (C) Computes the cotangent of angle (s) in radians; y = cot(x) = cos(x)/sin(x) . 85 COTD of (E) put in column (C) : Computes the cotangent of angle (s) in degrees. COTH of [E) put in column (C) : X ~ X X ~x Computes the hyperbolic cotangent of (E) ; y = (e + e )/(e - e ). SIN of (E) put in column (C) : Computes the sine of angle (s) in radians; y = sin(x) . SIND of (E) put in column (C) : Computes the sine of angle (s) in degrees. SINH of (E) put in column (C) : X ~x Computes the hyperbolic sine of (E) ; y = h(e - e ) . TAN of (E) put in column (C) Computes the tangent of angles in radians; y = tan(x) = sin(x)/cosCx) . TAND of (E) put in column (C) : Computes the tangent of angle (s) in degrees. TANH of [E) put in column (C) : Computes the hyperbolic tangent of (E) , y = (e - e )/(e + e ). 2.5 Triple Operations . All the commands in sections 2.1, 2.2 [except CHANGE), 2.3 and 2.4 have an additional form with two additional arguments for triple operations. (Hence, commands in section 2.1 will have 5 arguments, whereas those in sections 2.2, 2.3 and 2.4 will have 4 arguments.) Also, there are two commands in section 2.6, FRACTIONAL and INTEGER, which have this added form. The three operations are: 1. The operation specified by command (e.g., DIVIDE) 2. Multiplication 3. Addition 86 For example, if the numbers 1, 2 and 3 are in column 17, the instruction SQUARE column 17, multiply by 2.0, add 1.2, put in column 18 would put' the numbers 3.2, 9.2 and 19.2 into column 18. This instruction is equivalent to the three instructions: SQUARE 17, 18 MULTIPLY 18, 2.0, 18 ADD 1.2, 18, 18 The abbreviations described in the other sections can also be used in the triple operation instructions. If the number of arguments in an instruction is incorrect (should be 3 or 5 for those in section 2.1 and 2 or 4 for those in sections 2.2, 2.3 and 2.4), the following fatal error occurs : *** (n) IS AN ILLEGAL NUMBER OF ARGUMENTS Since all triple operation instructions bear the same relationship to the single operation instructions described previously, all the optional forms are merely listed on the next page (alphabetically) without a description. The five argument instructions are separated from tiie four argument instructions. The first instruction in each group is boxed as usual, but the remaining instructions are just listed. 87 5 Arguments / / ADD CE) to (E) , multiply by (E) , add (E) , put in column [C) DIVIDE (E) by (E) , multiply by (E) , add (E) , put in column (C) MULTIPLY (E) by (E) , multiply by CE) , add CE) , put in column (C) RAISE CE) to CE), multiply by CE) , add CE) , put in column (C) SUBTRACT CE) from (E) , multiply by CE) , add CE) , put in column CC) 4 Arguments / ABSOLUTE value of CE) , multiply by CE) , add CE) , put in column CC) / ACOS of CE) , multiply ACOSD of (E) , multiply ACOSH of CE) , multiply ACOT of (E) multiply ACOTD of CE) multiply ACOTH of (E) multiply ANTILOG of (E) multiply AS IN of (E) multiply ASIND of CE) multiply ASINH of (E) multiply ATAN of (E) multiply ATAND of (E> multiply ATANH of CE) multiply COS of CE) multiply COSD of CE) multiply COSH of CE) multiply COT of CE) multiply COTD of (E) multiply COTH of CE) multiply EXPONENTIAL of CE) multiply FRACTIONAL part of (E) multiply INTEGER part of CE) multiply LOGE of (E) multiply LOGTEN of (E) multiply NEGEXPONETIAL of (E) multiply SIN of (E) multiply SIND of CE) multiply SINH of CE) multiply SQRT of (E) multiply SQUARE of CE), multiply TAN of (E) multiply TAND of CE) multiply TANH of CE), multiply by CE) . add CE), by CE) , add CE), by (E) , add CE), by CE) , add (E), by (E) add CE), by CE) , add CE), by CE) , add CE), by CE) ■add CE), by CE) add CE), by CE) add CE), by CE) add CE), by CE) add CE), by CE) add (J), by CE) add CE), by CE) add CE), by CE) add CE), by (E) add CE), by (E) add (E), by CE) add CE), by CE) add CE), by CE) add CE), by CE) add CE), by CE) add (E), by CE) add (E), by CE) add CE), by CE), add CE), by CE), add CE), by CE), add CE), by CE), add CE), by CE), add (E), by CE), add CE), by CE), add CE), by CE), add CE), put in column CC) put m column (C) put in column CC) put in column (C) put in column CC) put in column CC) put in column CC) put in column CC) put in column CC) put m column (C) put in column CC) put in column (C) put in column (C) put in column CC) put m column (C) put in column CC) put in column (C) put in column (C) put in column CC) put in column CC) put m column CC) put in column CC) put in column CC) put m column (C) put in column CC) put in column (C) put in column CC) put in column CC) put in column CC) put in column CC) put m column CC) put in column CC) put in column CC) 2.6 Data Summarization. ACCURACY, FRACTIONAL, INTEGER, ROUND - Numbers PARSUM, ROW SUM, SUM - Sums EXPAND, PARPRODUCT, PRODUCT - Products AVERAGE, MAXIMUM, MINIMUM, RMS - Properties Numbers This instruction is used to see how closely two (sets of) numbers agree. In ACCURACY X, Y, Z Z = -LOGTEN | (X-Y)/Y| , if X f Y and Y f Z = -LOGTEN |X-Y| , if X f Y and Y = Z = 8, if X = Y But Z is never less than -8.0 or greater than +8.0 (in the NBS computer). The instruction gives a measure of the number of leading digits in X which are the same as the number of leading digits in Y. If the numbers 1.2347680, 1.2345378, 2.2234568, 1.234.5678, 1.2345679, -1.2345678, 76.234567, 2.4691356 and 0.0 are in column 31, the instruction ACCURACY of column 31 compared to 1.2345678 put in column 32 would put the numbers 3.7900571, 4.6144509, .096367388, 8.0000000, 7.0731966, -.30102999, - 1.7835463, 0.0 and 0.0 into column 32. This instruction will give different answers from the instruction ACCURACY of 1.2345678 compared to column 31 put in column 32 The answers here would be 3.7901275, 4.6144404, .35188114, 8.0000000, 7.0731966, -.30102999, .0070906878, .30102999 and -.091514938. A negative result indicates the two values being compared either do not agree in the first digit or they differ with respect to sign. An example of two numbers which do not agree in their leading digit (and actually differ in order of magnitude) is given above by X = 76.234567 and Y = 1.2345678; the accuracy reported is -1.7835463. An example of two numbers which do not agree in sign is X = -1.2345678 and Y = 1.2345678; here the accuracy reported is -.30102999. This instruction was added to aid the developers of OMNITAB in testing the accuracy of instructions, but it is available for use by all users. The above description of accuracy was used extensively by R. H. Wampler in "A report on the accuracy of some widely used least squares computer programs.", J. Am. Statist. Assoc, 65, 549-565 (1970). It is also used by the FIT and POLYFIT instructions. FRACTIONAL part of (E) put in column (C) The portion of each value to the left of the decimal point is dropped and the remainder is put in the designated column. The sign of each number is kept. The instruction FRACTIONAL part of column 7 put in column 8 applied to the numbers 7.35, -12.82, 26.00 and 0.96 in column 7, would put 0.35, -0.82, 0.00 and 0.96 into column 8. The instruction is the complement of INTEGER, below. 89 INTEGER part of (E) put in column (C) INTEGER is the complement of the previous instruction, FRACTIONAL. The portion of each value on the right of the decimal point is chopped and the remainder is put in the designated column. For the above numbers in column 7, namely 7.35, -12.82, 26.00 and 0.96, the instruction INTEGER part of column 7 put in column 9 would put the numbers 7., -12., 26. and 0. into the first four rows of column 9. ROUND the numbers in column (C) to (n) digits and put in column (C) The numbers are rounded to the specified number of digits in accordance with the standard rules for rounding. The argument (n) must be an integer from 1 to 8. (1) If the (n+l)st digit is less than 5, the portion beyond the nth digit is dropped and the nth digit is unchanged. E.g., 1234.5678 rounded to 3 digits is 1230. (2) If the (n+l)st digit is greater than 5, the nth digit is increased by 1. Or, if the (n+l)st digit equals 5 and any digit on the right is not zero, the nth digit is increased by 1. E.g., 1234.5678 rounded to 5 digits is 1234.6. (3) If the (n+l)st digit is 5 and all digits on the right are zero, the nth digit is rounded to the nearest even digit, i.e., if the nth digit is even, it is unchanged and if the nth digit is odd, it is increased by 1. The number 123.4500 rounded to 4 digits is 123.4, whereas the number 986.75 rounded to 4 digits is 986.8. Sums PARSUM column (C) and put in column (C) The partial sums of the first named column are put in each row of the second named column. If the numbers 1, 7, 0, 3 and 5 are in column 1, the instruction PARSUM 1,2 would put the numbers 1, 8, 8, 11 and 16 into the first five rows of column 2. ROW SUM columns (C) , (C) , ... (C) and put in column (C) The instruction must have at least 4 arguments. Each row of the last named column contains the sum of the numbers in the corresponding row of the other columns. For the following numbers: COLUMN 2 COLUMN 4 COLUMN 1 COLUMN 6 COLUMN 11 2.0 1.0 3.0 2.0 8.0 3.0 4.0 0.0 3.0 10.0 5.0 2.0 4.0 1.0 12.0 90 the numbers in column 11 would result from using the instruction ROW SUM columns 2, 4, 1 and 6 and put in column 11 The command ROWSUM (one word) is synonymous with ROW SUM (two words) both here and in the two options which follow. / J I ROW SUM columns (C) through (C) and put in column (C) / / / This instruction performs the same operation as the one above. It has exactly 3 arguments (all column numbers) . The instruction finds the sum, row by row, for all columns between the first named column and the second named column, inclusive, and puts the result in the third named column. In the example above, if columns 4, 1 and 6 were changed to 3, 4 and 5, the instruction ROW SUM columns 2 through 5 and put in column 11 would give the same results in column 11. / 7 I ROW SUM the entire worksheet and put results in column (C) / / / Each row of the worksheet is summed and put in the corresponding row of the named column. For example, row 17 of the named column (if NRMAX is greater than 16) would contain the sum of the numbers in all 62 columns of row 17 (unless DIMENSION has been used) of the worksheet, including row 17 of the named column. The instruction ROW SUM 23 is equivalent to the instruction ROW SUM 1,62,23 and also to the instruction ROW SUM 1 *** 62, 23 SUM the rows of column (C) and put in column (C) Finds the sum of numbers in the first named column and puts the single result into every row of the second named column. If the numbers 2.0, 7.2 and 1.3 are in column 34, the instruction SUM column 34 and put in column 56 would put 10.5, 10.5 and 10.5 into column 56. Two additional forms of SUM are described below. / T I SUM column (C) , rows (R) through (R) , and put in column (C) / / / This instruction is the same as the one above; except only the indicated consecutive rows are summed. If the values 6.3, 2.0, 7.2, 1.3 and 4.8 are in column 11, the instruction SUM column 11, rows 2 through 4, and put in column 12 91 would put 10. S, 10.5, 10.5, 10.5 and 10.5 into the first five rows of column 12. The second argument does not have to be less than the third argument, i.e. the following instruction would be equivalent to the previous one SUM 11, 4, 2, 12 / 7 I SUM column (C) , rows (R) , (R) , ... (R) and put in column (C) / / / The instruction must have at least 5 arguments. It is similar to the two instructions above; only the specified rows are summed and they need not be consecutive. The instruction above could be written: SUM column 11, rows 3, 2 and 4, and put result in column 12 ***** Products EXPAND (E) to power (p) in increments (i) and put in column (C) and succ. cols Provides for the exponentiation of a constant or column to the integral power (p) in equal, integral steps (i) . Results are put in successive columns starting with the column designated by the 4th (last) argument. The number of columns used is the same as the number of steps, which is (p)/(i). The exponent is always equal to the increment size (i). The instruction EXPAND 2.0 to the power 8 in increments of 2 and put in column 11 would put the values 4., 16., 64. and 256. into each row of columns 11 through 14. The number of columns used for storing results is 8/2 =4. An additional form of the instruction is described below. Caution: The power (p) should be an integral multiple of the increment (i) . If not, an additional increment is used. E.g., the instruction EXPAND 2.0, 7, 2, 11 would produce the same answers as the instruction above. / 7 I EXPAND (E) to power (K) in steps of (K) and put in col (C) and successive cols / / / Same as above, but the power and the increment do not have to be an integer. The instruction EXPAND 4.0, 2.5, 0.5, 11 would put the 0.5, 1.0, 1.5, 2.0 and 2.5 powers of 4.0, namely 2., 4., 8., 16. and 32., into each row of columns 11 through 15. The number of columns used for storing results is 2.5/0.5 = 5. Caution: The quotient of the power (2nd argument) and the increment size (3rd argument) should be an integer. If the quotient is not an integer, an additional step is taken by the instruction, but no diagnostic is given. For example, the instruction 92 EXPAND 4.0, 2.7, 0.5, 11 would be performed like EXPAND 4.0, 3.0, 0.5, 11 PARPRODUCT of column (C) , put partial products in column (C) Puts partial products of successive rows of the 1st named column into the 2nd named column. If the numbers 1., 3., 2., 5., 0. and 4. are in column 23, the instruction PARPRODUCT of column 23 put in column 24 would put the numbers 1., 3., 6., 30., 0. and 0. into the first six rows of column 24. If any product exceeds the capacity of the computer, zero is returned for that particular row and all subsequent rows. No diagnostic is given. If the numbers in the first named column are consecutive integers (starting with 1 or 2), the nth row will contain n factorial. PRODUCT row by row of cols (C) , (C) , ... (C) put into column (C) The instruction must have at least four arguments, all column numbers. For the following numbers COLUMN 2 COLUMN 4 COLUMN 1 COLUMN 6 COLUMN 11 2.0 1.0 3.0 2.0 12.0 3.0 4.0 0.0 3.0 0.0 5.0 2.0 4.0 1.0 40.0 the numbers in column 11 would be the result of using the instruction PRODUCT row by row of columns 2, 4, 1 and 6 put in column 11 / J I PRODUCT row by row of columns (C) through (C) put in column (C) / / = / This instruction performs the same type of operation as the one above. It has exactly three arguments. The instruction finds the product of the the numbers in each row of the consecutive columns from the 1st named column to the 2nd named column, inclusive, and puts the results into the 3rd named column. If columns 4, 1 and 6 were changed to 3, 4 and 5 in the example above, the instruction PRODUCT row by row of columns 2 through 5 put in column 11 would give the same answers in column 11. The 1st argument should be less than the 2nd argument . 93 Properties AVERAGE the values in column (C) and put the result in column (C) For the n=NRMAX numbers x. in the 1st named column, the instruction computes x = E. t x./n i=l r and puts the result into each row of the 2nd named column. MAXIMUM value of the numbers in column (C) put in column (C) Finds the largest value in the 1st named column and puts the single result into each row of the 2nd named column. The command MAX is an acceptable abbreviation of MAXIMUM, both here and in the option below. - _ __ , ^ / MAXIMUM of col (C) put in col (C) , corresp. value of (C) in (C), (C) in (C) . . . / / , / If ' the numbers 3.1, 17.6, 9.2, 11.6 and 8.3 are in column 51 and the numbers 127.8, 92.3, 15.3, 224.7 and 75.4 are in column 61, the instruction MAXIMUM of col 51 put in col 52, corresponding value of 61 put in col 62 would put the number 17.6 (row 2 of column 51) into each of the five rows of column 52 and the number 92.3, in the corresponding 2nd row of column 61, into the first five rows of column 62. The instruction must have an even number of arguments. MINIMUM value of the numbers in column (C) put in column (C) Finds the smallest value in the first named column and puts the single result into each row of the second named column. The command MIN is an acceptable abbreviation of MINIMUM, both here and in the option below. r ' ~~~ *~ ~ ■ z / MINIMUM of col (C) put in col (TJ) , corresp. value of (C) in (C) , (C) in (C) . . . / / . „_ / If the numbers 3.1, 17.6, 9.2, 11.6 and 8.3 are in column 51 and the numbers 127.8, 92.3, 15.3, 224.7 and 75.4 are in column 61, ■the instruction MINIMUM of col 51 put in col 52, corresponding value of col 61 put in col 62 would put the number 3.1 (row 1 of col 51) into each of the five rows of column 52 and the number 127.8, in the corresponding row (1) of column 61, into the first five rows of column 62. The instruction must have an even number of arguments. RMS of column (C) put in column (C) 94 For the n=NRMAX values x. in the 1st named column, the instruction puts the root mean square (RMS) A.n 2, /I. -. x./n i=l 1 into each row of the 2nd named column. For the numbers 1., 2., 3., 4. and 5. in column 28, the instruction RMS of column 28 put in column 29 would put the value 3.3166248 (= /S5/5 = /ll) into the first five rows of column 29. 2.7 Complex Arithmetic . CADD, (DIVIDE, CMULTIPLY, CPOLAR, CRECTANGULAR, CSUBTRACT Any complex number has [in rectangular coordinates) a real and an imaginary part. In OMNITAB, two columns are needed for each set of complex numbers. The first number in each pair is the real part and the second number of the pair is the imaginary part. Otherwise, the arithmetic operations are similar to those in section 2.1. However, triple operation instructions are not available and no abbreviations are allowed. Two commands are available for changing from one coordinate system to the other; CPOLAR and CRECTANGULAR. The last two arguments of each instruction are always column numbers. The remaining arguments may be either constants or column numbers. A complex' number z can be written as z = x + iy, where x is the real part and y is the imaginary part. This notation will be used in the descriptions below. If there are two complex numbers, they will be represented by z^ = Xj + ivj and z 2 = x 2 + iy 2> For further details the reader may consult, for example, R. V. Churchill, "Introduction to Complex Variables and Applications", McGraw-Hill Book Company (1948). To assure that the complex arithmetic instructions give accurate results, internal calculations are done using double precision arithmetic. CADD real (E) imag (E) to real (E) imag (E) put real in col (C) imag in col (C) The two (sets) of complex numbers specified by the first four arguments are added and then put in the columns indicated by the last two arguments. Tf the two numbers added are z 1 and z 2 , then the result z = z.. + z 2 is given by: x = x, + x 2 and y = y 1 + y 2 - CDIVIDE real (E) imag (E) .by real (E) imag (E) put real in col (C) imag in (C) Performs the indicated complex division. For z = ^^l z 2 f z 2 ^ Q ' x = ( Xl x 2 + yi y 2 )/(x^ + y 2 2 ) and y = (x^ - x^)/^ + y 2 ) . If division by zero is attempted, the result is set equal to zero and an arithmetic diagnostic is given. 95 CMULTIPLY real (E) imag (E) by real (E) imag(E) put real in col (C) imag in (C) Performs the indicated complex multiplication. For z = z z ., x = x ] _x 2 - y 1 y 2 and y = x^ + x^. CPOLAR for x = (E) , y = (E) put rho in col (C) , theta in col (C) This command changes complex numbers in the rectangular coordinate system to numbers in the polar coordinate system. For x = rcosQ and y = rsinG, the instruction puts r = /(x 2 + y 2 ) and 9 = tan _1 (y/x) in the last two columns. The principal value of the arctan is taken between -it/2 and +ir/2. If x = 0, 9 is set equal to zero and an arithmetic diagnostic is given. CRECTANGULAR for rho = (E) , theta = (E) put x in col (C) , y in col (C) Changes from polar coordinates to rectangular coordinates. This instruction is the inverse of CPOLAR above, The results x = rcos9 and y = rsin9 are put in the last two columns. CSUBTRACT real (E) imag (E) from real (E) imag (E) put real in (C) imag in (C) Performs the indicated subtraction. For z = z - z , the instruction puts x = x 2 - x x and y = y 2 - y x in the last two columns. 96 3. DATA MANIPULATION . This section contains five types of instructions for data manipulation which enhance problem solving considerably. Caution . Several of the instructions in this section affect the value of NRMAX. Also, in several instructions it is possible to make a mistake in using an argument, which will define a location outside the worksheet. When this happens an appropriate diagnostic will be given. Some of the instructions in this section, although powerful, are a little tricky to comprehend. A liberal amount of self- teaching can help immensely; see section B4.1. 3.1 Defining Operations . COUNT, DEFINE, ERASE, RESET, RESET "V" Care should be exercised in using RESET and the last three forms of DEFINE to avoid using an argument which defines a number of rows which exceeds the number of rows in the worksheet (normally 201) or to define a row number outside the worksheet. COUNT length of column (C) and put in column (C) Starting from the bottom, row NRMAX, the instruction searches for the first row of the first named column containing a value which is not equal to zero. The number of this row is the "count", which is put into each row of the second named column. If NRMAX=S and the numbers 1, 2, 3, 4 and are in column 11, then the instruction COUNT of column 11 put in column 12 would put the number 4.0 into the first five rows of column 12. DEFINE (E) into column (C) If the first argument is a constant, the constant is put into each row of the designated column. The instruction DEFINE the value 9.6 into column 3 is equivalent to the instruction ADD the value 0.0 to the value 9.6 and put in column 3 If the first argument is a column number, the instruction simply moves one column of numbers to another column. The instruction DEFINE column 11 into column 33 is equivalent to the instruction ADD the value 0.0 to column 11 and put in column 33 and also to the instruction (see section 3.2) 97 MOVE the array in 1,11 of size **NRMAX** x 1 to 1,33 I ~ ' 7 / DEFINE the constant (K) into row (R) of column (C) / / / The constant (K) is put into a single location in the worksheet. The row number (R) can exceed NRMAX. / ' ' ~ —■ ' 7 I DEFINE the value in row (R) of column (C) into column (C) / / / The number in row (R) of column (C) is put into each row of the second named column. The number may be located below NRMAX, nevertheless it is put in rows 1 to NRMAX of the second named column. If 3.6 is in row 7 of column 11 and NRMAX = 5, the instruction DEFINE the value in 7,11 into column 12 would put the numbers 3.6, 3.6, 3.6, 3.6 and 3.6 into the first five rows of column 12. / " ■ ' ' ' 1 I DEFINE the value in row (R) of column (C) into row (R) of column (C) / / ___ . „ / A single number is moved from any specified location in the worksheet to any other location. A number can be moved from above NRMAX to below NRMAX, or vice versa. The instruction DEFINE the value in 7,11 into 4,32 is equivalent [see section 3.2) to the instruction MOVE the array in 7,11 of size lxl to 4,32 ERASE columns (C) , (C) ... (C) Zeros are put into each row of the designated columns. The number of arguments is variable. Unlike the option below, which has no arguments, the value of NRMAX is unaffected by the instruction. / 7 I ERASE the entire worksheet / / / Each entry in the entire worksheet is set equal to zero. The value of NRMAX is reset to zero. Unlike an OMNITAB instruction, this is the only initialization that is performed. This instruction may be used at the start of a new subset of instructions when one does not want to destroy any previously used titles, notes or stored instructions. RESET nrmax to equal (r) rows Simply resets the value of NRMAX to the specified number of rows. (If the argument is not an integer, it is truncated to an integer.) Sometimes it is wise to use the instruction RESET before using a READ or SET instruction. See, also, section B1.6. 98 RESET "V" variable equal to (K) The qualifier "V" can be any one of the letters (without quotation marks) V, W, X, Y or Z. (If the argument in the instruction is an integer (without a decimal point), it is automatically converted to a constant.) See sections B1.7 and B1.16 for further details. 5.2 Moving Data . DEMOTE, DUPLICATE, EXCHANGE, MOVE, PROMOTE The commands DUPLICATE and MOVE actually operate on arrays. However, since they are commonly needed and used, they are described here rather than in section 7 along with the regular array operation commands. These commands are often used by those who are unfamilar with the array operation commands described in section 7. See section 7 for further details. DEMOTE by (r) rows, col (C) into col (C) , col (C) into col (C) , ... etc. For each pair of columns, each value in the 1st named column is moved (pushed) down (r) rows and put in the 2nd named column. The first (r) rows of the 2nd named column will remain unchanged. NRMAX is increased by (r) . The number of arguments is always odd and at least 3. This instruction is essentially the reverse of PROMOTE, described below. If the numbers 1 to 8 are in column 26 and the numbers 41 to 48 are in column 27, the instruction DEMOTE by 3 rows column 26 into column 27 would put the numbers 41, 42, 43, 1, 2, 3, 4, 5, 6, 7 and 8 into column 27. NRMAX would be increased by 3 = (r) from 8 to 11. This instruction is actually equivalent to the two instructions MOVE 1,26 size 8x1 to 4,27 RESET 11 Caution, the instruction demotes each column (denoted by the even arguments) independently and consecutively. Hence, for the numbers above, the instruction DEMOTE by 3 rows col 26 into 27, 27 into 27 would put the numbers 41, 42, 43, 41, 42, 43, 1, 2, 3, 4 and 5 into column 27. NRMAX would be 11. (If the argument (r) is negative, the DEMOTE instruction is synonymous with the instruction using PROMOTE for DEMOTE and r for -r.) The value of (r) plus NRMAX should not exceed the number of rows in the worksheet (normally 201); otherwise the following informative diagnostic is given * ATTEMPT TO DEMOTE OFF THE WORKSHEET. SPILL IS LOST. / " T I DEMOTE all values in the worksheet by (r) rows / / : / Similar to the above instruction, but the entire worksheet is demoted by (r) rows and only one argument is used. The results are put back into the original columns. The new value of NRMAX is the old value of NRMAX plus (r) , unchanged . The numbers in the first (r) rows remain DUPLICATE (t) times the array starting in (R) , (C) of size (r)x(c) put in (R) , (C) The two pairs of arguments, after the first argument, designate a rectangular (or square) array of consecutive • rows and columns. The first pair gives the row-column location of the number in the upper left-hand corner of the array and the second pair determines the size of the array. The last pair of arguments specify the location of the element in the upper left-hand corner of the new array. The new array will be the original array reproduced (t) times. Each copy of the original array is put immediately below the previous one. Hence, the new array will have (t)x(r) rows and the same number of columns (c) as the first array. The new array may overlap the original array. Unless there is an overlap, the original array remains unchanged. NRMAX can be changed by this instruction. For the following data in the worksheet Row/ Column 11 2.0 6.0 12 0.0 4.0 13 8.0 -2.0 the instruction DUPLICATE 3 times the array starting in 7,11 of size 2x3 and put in 4,32 would give the following result: //Columr l 32 33 34 4 2.0 0.0 8.0 5 6.0 4.0 -2.0 5" 2.0 0.0 8.0 7 6.0 4.0 -2.0 8 2.0 0.0 8.0 9~ 6.0 4.0 -2.0 The above instruction is equivalent to the 3 = (t) MOVE (see next page) instructions MOVE the array starting in 7,11 of size 2x3 to 4,32 MOVE the array starting in 7,11 of size 2x3 to 6,32 MOVE the array starting in 7,11 of size 2x3 to 8,32 If (t)x(r) exceeds the number of rows in the worksheet, the following fatal error occurs *** ILLEGAL SIZE ROW NUMBER Interchanges the numbers in the rows of each pair of designated columns. The number of arguments is always even. The exchanges are made on each pair consecutively. Hence, care is needed if all the arguments are not different. For the numbers Column 1 Column 2 Column 3 4, 2, 7, 3 and 8 11, 17, 19, 12 and 16 125, 123, 128, 126 and 134 100 the instruction EXCHANGE column 1 with column 3, and column 3 with column 2 would first excliange columns 1 and 3 and then exchange the new column 3 (the original column 1) with column 2 producing the results: Column 1 Column 2 Column 3 125, 123, 128, 126 and 134 4, 2, 7, 3 and 8 11, 17, 19, 12 and 16 MOVE the array starting in (R) , (C) of size (r)x(c) to the array in (R) , (C) The first four arguments designate a rectangular array of consecutive rows and columns. The first two arguments give the row-column location of the number in the upper left-hand corner of the array. The second two arguments give the size of the array. The last two arguments indicate where the array is to be moved. Arguments are not used to specify the size of the array in the new locations since the size is always the same as that of the original array. The new location may overlap the original array. For the following data in the worksheet Row/ Column 11 12 13 7 2.0 0.0 8.0 F 6.0 4.0 -2.0 the instruction MOVE the array starting in 7,11 of size 2x3 to 4,32 would give the following result: Row/ Column 32 33 34 4 2.0 0.0 8.0 I 6.0 4.0 -2.0 See, also, the discussion of arrays in section 7 and the description of the synonym AMOVE in section 7.2. If an attempt is made to move a rectangular array outside the worksheet, a fatal error will result. PROMOTE by (r) rows, col (C) into col (C) , col (C) into col (C) , ... etc. This instruction is essentially the reverse of DEMOTE, which is described above. The number of arguments is always odd and greater than 2. For each pair of columns, each value in the 1st named column is moved up (r) rows into the second named column. The bottom (r) rows of the 2nd named column remain unchanged. The first (r) rows of the 1st named column will not appear in the 2nd named column. The number of values actually moved is NRMAX - (r). If the numbers 1 to 8 are in column 26 and 41 to 48 are in column 27, the instruction PROMOTE by 3 rows column 26 into column 27 would put the numbers 4, 5, 6, 7, 8, 46, 47 and 48 into column 27. 101 Caution, the instruction promotes each column (even arguments) independently and consecutively. Hence, for the numbers above and the numbers 31 to 38 in column 28, the instruction PROMOTE by 3 rows column 26 into column 27, and column 27 into column 28 would give the same results in column 27 and would put the numbers 7, 8, 46, 47, 48, 36, 37 and 38 into' column 28 . (If the argument (r) is negative, the PROMOTE instruction is synonymous with the same instruction using DEMOTE for PROMOTE and r for -r.) If the argument (r) exceeds NRMAX, the following informative diagnostic is given * ATTEMPT TO PROMOTE FROM BELOW NRMAX. FIRST ARGUMENT IS RESET TO NRMAX / T I PROMOTE all values in the worksheet by (r) rows / / ____/ Similar to the above instruction, but the entire worksheet is promoted and when each column is promoted the result is put back into the same column. The instruction has exactly one argument. Zeros are put in the bottom NRMAX- (r) rows of the worksheet. 3.5 Manipulative Operations . CENSOR, CLOSE UP, FLIP, INSERT, SEPARATE, SHORTEN The instructions described here enhance problem solving considerably. The CENSOR instruction is related to the instructions described in section 3.5 CENSOR col (C) for values less than or equal to (E) , replace by (E) , put in (C) Each number, X, in the 1st named column is compared with the value (s) , Y= (E) , designated by the 2nd argument. If X is less than or equal to Y, X is replaced by the number designated by the 3rd argument and put in the corresponding row of the column designated by the 4th (last) argument. If X is greater than Y, then X is simply moved to the column designated by the last argument. The original numbers in the 1st column remain unchanged. To censor values larger than a particular value, change the sign of the values, censor for the negative of the desired value, and change the sign back. This instruction has many uses in treating subsets of data or in defining properties of numbers. See section B4.6 for some examples and see also MATCH in section 3.5. For the numbers Column 11: 2.3, 7.6, 5.2, 8.3 and 4.2 Column 12: 3.4, 5.8, 5.2, 4.7 and 6.3 the instruction CENSOR col 11 for values less than or equal to col 12, replace by -1.2, put in col 13 would leave columns 11 and 12 unchanged and would put the numbers -1.2, 7.6, -1.2, 8.3 and - 1.2 into column 13. Whereas, the instructions CHANGE sign of columns 11 and 12 CENSOR col 11 for col 12, replace 1.2, put in column 13 CHANGE sign of columns 11, 12 and 13 102 would leave columns 11 and 12 unchanged and would put the numbers 2.3, -1.2, -1.2, -1.2 and 4.2 into column 13. CLOSE UP rows with (K) in columns (C) , (C) ... (C) Each row containing the number (K) is moved to the bottom of the column and the number in the row is changed to zero. The numbers, which were below (K), are all moved up one row. Operations are performed on each column independently. For the numbers Column 3: 2, 1, 3, 2, 1, 0, 3, 1, 4 and 5 Column 4: 1, 4, 5, 0, 6, 1, 7, 2, 3 and 5 the instruction CLOSE UP rows having 1.0 in columns 3 and 4 would change the numbers in columns 3 and 4 to Column 3: 2, 3, 2, 0, 3, 4, 5, 0, and Column 4: 4, 5, 0, 6, 7, 2, 3, 5, and FLIP column (C) into col (C) , col (C) into col (C) , ... etc. In each pair of columns, the second named column is the first named column turned upside down. If the numbers 2, 0, 1, 9 and 3 are ■ in column 17, the instruction FLIP column 17 into column 18 would put the numbers 3, 9, 1,.0 and 2 into column 18. The instruction FLIP 17, 18, 18, 18 would leave the original numbers in columns 17 and 18. The number of arguments in the instruction is always even. / ; 7 I FLIP the entire worksheet upside down / / / The instruction without an argument turns the entire worksheet upside down. Row 1 goes into row NRMAX, row 2 goes into row NRMAX-1, row 3 goes into row NRMAX-2, etc.. INSERT into col (C) from (C) at every (i)th row, start with row (R), put in (C) The values in the second named column are inserted before rows R, R+i, R+2i, ... etc. of the first named column and the results are stored as indicated . The first two columns remain unchanged. The value of NRMAX is increased by 1 + (NRMAX-R+l)/(i-l) However, NRMAX never exceeds the number of rows in the worksheet (normally 201). The value of NRMAX must be at least 2 to begin with. The values of both (i) and (R) must be greater than one. For the numbers (NRMAX=6) 103 Column 57: 1, 2, 4, 6, 8 and 10 Column 58: 3, 5, 7 and 9 the instruction INSERT in col 57 from col 58 at every 2nd. row, starting with row 3, put in col 60 would put the numbers 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 and into column 60. Here, NRMAX would be increased by l+(6-3+l)/(2-l) = 1+4/1 = 5. Hence, the new value of NRMAX is 11=6+5. SEPARATE from column (C) every (r)th row, start with row (R) , put in column (C) Extracts every (r)th row from the first named column, starting with row (R) , and puts the result in the column designated by the fourth (last) argument. If the numbers 1 through 10 are in column 1, the instruction SEPARATE from col 1 every 2nd row starting with row 3 and put in column 4 would put the numbers 3, 5, 7 and 9 into the first four rows of column 4; leaving the remaining 6 rows intact. Caution, do not misspell the command by using SEPERATE. The instruction performs virtually the reverse operation of INSERT, above) . SHORTEN column (C) for col (C) equal to (K) , put . shortened cols in (C) and (C) The instruction operates somewhat differently depending upon whether the numbers in the second named column are (1) in increasing order, (2) in decreasing order, or (3) in neither increasing or decreasing order. (1) If the numbers in the second named column are in increasing order, the instruction, starting with row 1, looks for the first row containing the value (K) . If there is no value in the column equal to (K) , it finds the row containing the smallest number larger than (K) . NRMAX is reset to agree with the row number selected and the first two columns are put in the columns designated by the last two arguments. The first two columns remain unchanged. For the numbers Column 11: 1.0, 2.0, 3.0, 4.0 and 5.0 Column 12: 2.3, 4.2, 5.2, 7.6 and 8.3 the instruction SHORTEN col 11 for col 12 equal to 5.3 and put shortened cols in cols 21 and 22 would set NRMAX=4 and give the following results Column 21: 1.0, 2.0, 3.0 and 4.0 Column 22: 2.3, 4.2, 5.2 and 7.6 If the argument (K) in the above instruction was 5.2 instead of 5.3, NRMAX would equal 3 and the results would be same as above except 4.0 and 7.6 would not be put into row 4 of columns 21 and 22. (2) If the numbers in the second named column are in decreasing order, the operation is similar to that described in (1). However, if the value (K) is not found in the second named column, the instruction looks for the row containing the largest number less than (K) . Hence, if the numbers in columns 11 and 12, above, were in reverse order, the instruction above would set NRMAX=3 and give the results 104 Column 21: 5,0, 4.0 and 3.0 Column 22: 8.3, 7.6 and 5.2 (3) If the numbers in the second named column are in no particular order, the instruction looks for the first, pair of consecutive rows containing values which bracket (K), i.e. the value in one row is less than or equal to (K) and the value in the other row is greater than or equal to (K) . The value of NRMAX is reset to the higher of the two consecutive rows selected. For the numbers Column 11: 1.0, 2.0, 3.0, 4.0 and 5.0 Column 12: 7.6, 2.3, 5.2, 8.3 and 4.2 the instruction SHORTEN col 11 for col 12 equal to 5.2 and put shortened cols in cols 21 and 22 would set NRMAX=2 and give the results Column 21: 1.0 and 2.0 Column 22: 7.6 and 2.3 Note, in this case, that the columns are not shortened at 5.2 and NRMAX is set equal to 2, because the values 7.6 and 2.3 bracket 5.2. In any of the above three cases, if the value (K) is not found in the second named column, the following informative diagnostic is given * VALUE REQUESTED IN SHORTEN, ACOALESCE OR AAVERAGE NOT FOUND. NRMAX remains unchanged and the first two columns are put in the columns designated by the last two arguments. 5.4 Sorting Data . HIERARCHY, ORDER, SORT The instruction HIERARCHY does not sort directly, but is related to botli sorting and ranking. The ORDER instruction operates on several columns simultaneously. On the other hand, the SORT instruction only sorts one column, but several columns can be carried along during the sort. HIERARCHY of column (C) , put locations of smallest thru largest in column (C) Finds which row the smallest number is in and puts this row number in the first row of the 2nd named column; finds which row the second smallest number is in and puts this value into the second row of the 2nd named column; and so on. HIERARCHY is related to RANKS, described in section 4.1. If the numt.-rs 7.38, 4.29, 2.15, 8.54 and 6.47 are in column 23, the instruction HIERARCHY of column 23 put in column 28 would put the numbers 3, 2, 5, 1 and 4 into column 28. ORDER independently columns (C) , (C) ... (C) smallest to largest 105 Reorders each column separately, putting the smallest number in the first row, the second smallest in the second row, and so on until the largest number is put in row NRMAX. For the numbers Column 12: 4.2, 7.6, 1.3, 9.8 and 5.7 Column 43: 11.3, 15.4, 19.6, 12.8 and 17.5 the instruction ORDER columns 12 and 43 would change the numbers in columns 12 and 43 to Column 12: 1.3, 4.2, 5.7, 7.6 and 9.8 Column 43: 11.3, 12.8, 15.4, 17.5 and 19.6 SORT column (C) min to max, carry along columns (C) , (C) ... (C) Sorts (orders) the numbers in the first named column in increasing order and carries along the numbers in the corresponding row of the other designated columns. The results are put back into the same columns. For the numbers (see HIERARCHY above) Column 23: 7.38, 4.29, 2.15, 8.54 and 6.47 Column 11: 1.00, 2.00, 3.00, 4.00 and 5.00 the instructions would yield the results: HIERARCHY of column 23 put in column 28 SORT column 28 and carry along column 11 Column 28: 1.00, 2.00, 3.00, 4.00 and 5.00 Column 11: 4.00, 2.00, 1.00, 5.00 and 3.00 The numbers in column 11 are actually the ranks of the numbers in column 23. (See section 4.1 for a description of RANKS,) Care should be used in sorting alphabetical information which has been entered into the worksheet using a FORMAT, since different computers handle blanks (and other special characters) in different ways. A (reasonably) safe, but inefficient, method is to use an Al format specification. / ~ ~ ' "~ ' ! ' "7 / SORT column (C) / / ___ , / This option is synonymous with the instruction ORDER, with one argument, described above . 3.5 Search Operations . MATCH, SEARCH, SELECT The three instructions described here perform three different kinds of searching. The instruction MATCH is particularly useful in treating subsets of data. The instruction ONEWAY, described in section 4.3, although primarily an instruction for statistical analysis, can be used to perform certain types of matching operations. 106 Each row of the first named column is compared with the second argument (E) . If two values are exactly equal, the third argument (E) is put in the corresponding row of the column designated by the fourth argument. If the numbers are unequal the value in the column designated by the fourth argument remains unchanged. This is a powerful manipulative instruction, which is very often useful for analyzing subsets of data. Suppose the salaries 9,881.00, 5,212.00, 6,548.00, 5,212.00 and 8,098.00 are in column 21 and the corresponding (GS) grades 9, 3, 5, 3 and 7 are in column 22. Suppose we want the total salary for all persons in grade 3 (and also suppose that column 31 contains all zeros . ) Then the instructions MATCH column 22 with 3.0, extract from col 21, put in col 31 SUM column 31 and put into column 31 would put the numbers 0.00, 5,212.00, 0.00, 5,212.00 and 0.00 in column 31 after the execution of MATCH and would put the desired result 10,414.00 in the first five rows of column 31 after the execution of SUM. If similar information was required for all grade levels the MATCH instruction could be used in the repeat mode or a ONEWAY instruction (see section 4.2) could be used. Note, that if a match does not occur in any particular row, the corresponding row of the column designated by the fourth argument remains unchanged. Zero is not put into the row. If zero is the desired result, the user should either use an unused column or use an ERASE instruction. Note also, that two numbers must agree exactly (no tolerance is given) for a match to occur. Usually, but not necessarily, the second argument is either an integer or a column of integers. If integers are not involved, caution should be exercised since numbers may differ slightly due to round-off or conversion. SEARCH col (C) equal col (C) , move corresp nos in (C) into (C) , (C) to (C) etc. Searches down the first named column until it finds the first number equal to the number in row 1 of the second named column. If it finds the number in the kth. row, it transfers the number in row k of the 3rd named column to the first row of the 4th named column, row k of the 5th named column to the first row of the 6th named column, and so on. If the number is not found, a zero is put into the first row of the 4th, 6th, etc. named columns. This process is repeated using the value in row 2 of the second named column, then repeated again using the value in row 3 of the second named column, and so on. For the numbers Column 1 Column 2 Column 3 9, 3, 5, 3 and 7 3, 3, 3, 3 and 3 9881, 5212, 6548, 7864 and 8098 the instruction SEARCH col 1 equal to col 2, move corresponding nos in col 3 into col 4 would put 5212 into each row of column 4, whereas the instruction SEARCH col 2 equal to col 1, move corresponding nos in col 3 into col 4 would put the numbers 0, 9881, 0, 9881 and into column 4. The instruction should not be confused with MATCH, described above. The instruction always has an even number of 107 arguments. The numbers in the columns designated by the odd numbered arguments and the second column remain unchanged. SELECT in col (C) nos approx col (C) within absolute tol (K) and put in col (C) The instruction looks at the absolute value of the difference between numbers in the 1st named column and the number in row 1 of the 2nd named column. It selects the row, call it row m, for which this difference is less than or equal to the absolute tolerance (K) . If there is more than one' difference which satisfies the tolerance, row m will be the one with the smallest difference. Only one row is selected. Then the value in row m of the 1st named column is put in row 1 of the column designated by the fourth argument. If the tolerance is never satisfied, zero is put into row 1 of the designated column. This process is repeated using the value in row 2 of the second named column, then for the value in row 3, and so on. The numbers in the first two designated columns remain unchanged. For the numbers Column 31: 5, 4, 2.4, 2.3 and 1 Column 32: 2,7,5, 1 and 8 the instruction SELECT in col 31 nos approx col 32 within absolute tolerance 0.5 and put in col 37 would put the numbers 2.3, 0, 5, 1 and into column 37. / ' — — ~ ™ 7 I SELECT, in (C) nos approx col (C) within absolute tol (K) put in cols (C) to (C) / / , / Whereas the above form of SELECT only searches for the smallest difference which satisfies the specified tolerance, this form of the instruction searches for as many values as are determined by the last two arguments. The values in row (R) are stored according to the increasing size of the absolute difference between the number in row (R) of the 2nd named column and the numbers in the 1st named column. For the numbers Column 31: 5.3, 13.8, 12.6, 12.2, 28.7, 13.4, 4.6, 3.9 and 61.7 Column 32: 12.0, 13.0, 14.0, 3.0, 4.0, 5.0, 26.0, 27.0 and 28.0 the instruction SELECT in col 31 nos approx col 32 within 1.5 and put in cols 37 to 39 would yield Column 37: 12.2, 13.4, 13.8, 3.9, 3.9, 5.3, 0.0, 0.0 and 28.7 Column 38: 12.6, 12.6, 13.4, 0.0, 4.6, 4.6, 0.0, 0.0 and 0.0 Column 39: 13.4, 13.8, 12.6, 0.0, 5.3, 3.9, 0.0, 0.0 and 0.0 Note that only 3 columns were designated for storage. Hence, the fourth value in column 31, 12.2, was not selected as approximating 13.0 in row 2 of column 32 within the tolerance 1.5. / ■ : ^ ' 7 I SELECT in (C) nos approx [C) within abs tol (K) put in (C) to (C) count in (TO / / ___ , _____/ This form of the SELECT instruction operates exactly like the one immediately above, but, in addition, the number of values selected from the first named column (count or frequency) , for each row of the second named column, is put into each row of the column 108 designated by the last (6th) argument. For the numbers in the worksheet and the instruction in the form above, the instruction SELECT in col 31 nos approx col 32 within 1.5, put in cols 37 to 39 and freq in col 40 would put the numbers 3, 4, 3, 1, 3, 3, 0, and 1 into column 40. 109 4. STATISTICAL ANALYSIS . The instructions in this section are described in sufficient detail to enable anyone familar with the statistical terms to use the instructions effectively. All the instructions in sections 4.2 through 4.6 can automatically produce a comprehensive set of statistics. It is beyond the scope of this manual to describe the automatic output of these instructions in complete detail. Plans are being made to publish separate papers, which will describe these instructions in more detail and will include a discussion of the uses and misuses of the various statistics. To supplement the material here and to aid the non- statistician, a set of references is provided in section 4.8. (An alternative set of references is given in Hogben (1969).) Sections 4.2 through 4.6 contain optional forms of the basic instructions, which provide varying amounts of automatic storage. These forms also have additional forms with the letter S before the command to suppress the automatic printing. (See section B1.10.) In each case these options are merely listed and no description is given. The reader, in doubt, should refer to the previously described instruction without the letter S at the beginning of the command. If an attempt is made to put an S before the command in an instruction which does not provide storage of results, the instruction will be ignored and the following informative diagnostic will be given * COMMAND IGNORED - S BEFORE COMMAND NAME MEANINGLESS IF NO STORAGE REQUESTED. The instructions in sections 4.2, 4.3, 4.4 and 4.5 can be used to perform a weighted (unequal weights) analysis by specifying a column of weights. The use of negative weights is not allowed and causes the following fatal error *** NEGATIVE WEIGHTS MAY NOT BE USED If all the weights are equal to zero, the following informative diagnostic is given * ALL WEIGHTS ARE ZERO. COMMAND IS NOT EXECUTED A FREQUENCY instruction is the only one in this section which changes the value of NRMAX, Several of the instructions, which store results in the worksheet, may put results in rows below NRMAX, but the value of NRAMX is not changed. OMNITAB may seem to have relatively limited capability for statistical analysis. There are only 12 basic instructions in this section. However, the instructions are very powerful and many have several options. Also, the analysis of real data often requires that the analyst look at the data in several different ways. The instructions here and in the other sections provide considerable power and flexibility to do just this. 4.1 Elementary Analysis . FREQUENCY, HISTOGRAM, NH1ST0GRAM, RANKS Although the concept of a frequency distribution is very elementary, the computational problems are not so simple. As a result, there are eight different forms of the FREQUENCY instruction. The first four forms of the instruction do not store the lower and upper boundaries for each class, whereas the last four do store the boundaries. In all other respects the last four options are the same as the first four options. In order to construct a frequency distribution for a set of numbers, it is necessary to determine (1) the number of classes which will be used to group the data, (2) the length of 110 each class, and (3) the lower boundary of the first class. Freund and Williams (1958) give a clear discussion of how this may be done. It is always assumed that all the classes have the same length. In the first (and fifth) form the number of classes (k) , the class length (K) , and the lower boundary of the first class, (K) , are all determined by the instruction. In the second (and sixth) form, the number of classes, (k) , is specified by the user. In the third (and seventh) form, both the number of classes, (k) , and the class length, (K) , are specified by the user. In the fourth (and eighth) form, all three numbers are specified by the user. The argument (K) which specifies the class length and/or the lower boundary of the first class is a constant. All other arguments are integers. Warning : In each form NRMAX is reset to agree with the number of classes, (k) . Also, the number and type of arguments in the instruction determine which form is to be used, so the user should be careful. If the class length or lower class boundary of the first class is specified by the user, he should make sure that all the data are included in the frequency distribution. When the number of classes is determined by the program, it is computed to be the integral part of 1.0 + 3. 3 log, Q (NRMAX) , but never less than 5. The class length, unless otherwise specified, is equal to the absolute value of R/(k-l), where R is the range of the data (difference between the largest and the smallest) and k is the number of classes. The lower boundary of the first class, unless otherwise specified, is equal to the smallest datum minus one half the class length. The instruction STATISTICAL analysis (in the next section) automatically prints a frequency distribution using 10 classes. The computational method is different from that described here. The different forms of FREQUENCY provide more flexibility. No further descriptions of the forms of FREQUENCY are given below, but results of using the instruction on a specific set of data are presented. The data in column 1 are the actual 39 measurements of the velocity of light given by Mandel (1964) (coded by subtracting 299,799.0 from each measurement), namely 0.4, 0.6, 1.0, 1.0, 1.0, 0.5, 0.6, 0.7, 1.0, 0.6, 0.2, 1.9, 0.2, 0.4, 0.0, -0.4, -0.3, 0.0, -0.4, -0.3, 0.1, -0.1, 0.2, -0.5, 0.3, -0.1, 0.2, -0.2, 0.8, 0.5, 0.6, 0.8, 0.7, Q.7, 0.2, 0.5, 0.7, 0.8, 1.1 FREQUENCY distribution of column (C) put in column (C) The instruction FREQUENCY of column 1 put in column 13 would reset NRMAX to 6 and put the numbers 5, 11, 10, 12, and 1 into column 13. f ' 7 I FREQUENCY distribution of column (C) , using (k) classes, put in column (C) / / / The instruction FREQUENCY of column 1 using 10 classes put in column 23 would reset NRMAX to 10 and put the numbers 3, 3, 5, 8, 7, 7, 5, 0, and 1 into column 23. Ill I ~~7 / FREQUENCY dist'n of col (CI, using (k) classes of length (K) , put in column (C) / / . / The instruction FREQUENCY of column 1 using 13 classes of length 0.2 put in column 33 would reset NRMAX to 13 and put the numbers 3, 2, 5, 6, 3, 7, 7, 0, 5, 0, 0, and 1 into column 33. I "~~ " " ' 1 I FREQUENCY of (C), use (k) classes of length (K) starting at (K) put in col (C) / / , _ / The instruction FREQUENCY of column 1 using 5 classes of length 0.5 starting at -0.5 put in column 43 would reset NRMAX to 5 and put the numbers 8, 11, 14, 5 and 1 into column 43. r. — - ' ■ ~ ■ z / FREQUENCY of (C) , put lower boundaries in (C) upper in (C) frequencies in (C) / / „ / The instruction FREQUENCY of column 1, put boundaries and frequencies in cols 11, 12 and 13 would reset NRMAX to 6 and put the following numbers in the worksheet: Column 11 Column 12 Column 13 -.74, -.26, 0.22, 0.70, 1.18 and 1.66 -.26, 0.22, 0.70, 1.18, 1.66 and 2.14 5.00, 11.00, 10.00, 12.00, 0.00 and 1.00 The number of classes equals the integral part of l+3.3xlog 1f) (39) = 1+3. 3 [1.59016) = 6.2475 or 6. The class length is (1.9+.5)/5 = 2.4/5 = 0.48. The lower class boundary of the first class equals -0.5-0.48/2 = -0.74. / ' ' ' — — ■ - ; j I FREQUENCY of (C) use (k) classes, put bounds and freq's in cols (C) , (C) and (C) / / „ . „ / The instruction FREQUENCY of column 1 using 10 cells put in columns 21, 22 and 23 would reset NRMAX to 10 and put the following numbers , correct to 4 decimals , in the worksheet: Column 21: -.6333, -.3667, -.1000, .1667, .4333, .7000, .9667, 1.2333, 1.5000 and 1.7667 Column 22: -.3667, -.1000, .1667, .4333, .7000, .9667, 1.2333, 1.5000, 1.7667 and 2.0333 Column 23: 3.0, 3.0, 5.0, 8.0, 7.0, 7.0, 5.0, 0.0, 0.0 and 1.0 The class length is (1.9-(- .5))/ (10-1) =2.4/9=0.26666667. The lower boundary of the first class is -0.5 - 0.2666667/2 = -0.5 - 0.13333333 = -0.63333333. 112 /— ~ ~ 7 I FREQUENCY of (C) using (k) classes of length (K) put in cols (C) , (C) and (C) / / . / The instruction FREQUENCY of col 1 using 13 classes of length 0.2 put in cols 31, 32 and 33 would reset NRMAX to 13 and put the following numbers in the worksheet: -0.4, -0.2, 0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6 and 1.8 -0.2, 0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8 and 2.0 2.0, 5.0, 6.0, 3.0, 7.0, 7.0, 0.0, 5.0, 0.0, 0.0, 0.0 and 1.0 The lower boundary of the first class equals -0.5 - 0.2/2 = -0.6. / ' 7 I FREQUENCY of (C) , classes (k) , length [K) , start at (K) , put in (C) , (C) and (C) / / . / The instruction FREQUENCY of col 1 use 5 classes of length 0.5 start at -0.5 put in cols 41,42,43 would reset NRMAX to 5 and put the following numbers in the worksheet: Column 31: -0.6, Column 32: -0.4, Column 33: 3.0, Column 41 Column 42 Column 43 -0.5, 0.0, 0.5, 1.0 and 1.5 0.0, 0.5, 1.0, 1.5 and 2.0 8.0, 11.0, 14.0, 5.0 and 1.0 HISTOGRAM using mid-points in column (C) and frequencies in column (C) Automatically prints a histogram using one line for each class and representing each datum by a plus sign. An example is given on page 114, showing the histogram and the LIST OF INSTRUCTIONS, DATA AND DIAGNOSTICS. The data are the 39 measurements of the velocity of light used in the examples of FREQUENCY, above, and also in the example of STATISTICAL analysis in the next section. The instruction automatically prints the title HISTOGRAM FOR FREQUENCIES ... and the column headings MID-POINTS and FREQUENCY. The instruction is often, but not necessarily, used in conjunction with the last four forms of FREQUENCY, The mid- points, the points half-way between the lower and upper class boundaries, were obtained in this example by using the instruction ADD col 41 to col 42, mult by 0.5, add Q.O and put in col 44 A maximum of 95 plus signs are printed on any one line. If the frequency in any row exceeds 95, printing continues on the next line(s). NHISTOGRAM using mid-points in column (C) and frequencies in column CC) Same as the above instruction; except (1) printing does not start on a new page, C 2 ] the headings MID-POINTS and FREQUENCY are not printed, and [3) the title HISTOGRAM FOR ... is not printed. 113 I Oh LB O u o ,-H K) "H-l CO «>-H £rl> o- + + + + + + + + + + + + + + + + + OOH^UIH ■ S u O P-. < K W CO o c o g o o o o — o c o o o o c o o — o o ~ o o 3 (X o 3 o o ~ 1 LO Lfl LO Ul in Q CNI CN1 ["- (Nl t>- i — i 114 RANKS of column (C) put in column (C) Computes the ranks of a column of numbers. Whenever two or more numbers are tied (equal), each is assigned the rank equal to the average of the ranks if they were not equal. E.g., the numbers 3, 3, 7, 7 and 7 would have ranks 1.5, 1.5, 4, 4 and 4. The value of T = (1/12) Sum (t-l)t(t+l), all ties where t is the number tied, is put into the first row below row NRMAX (unless NRMAX equals the number of rows in the worksheet). Thus, in the above example T = (l/12)x (1x2x3 + 2x3x4) = (1/I2)x30 =2.5 would appear in row 6. The value of NRMAX remains unchanged. The value of T may be used to make adjustments for ties in statistics such as the rank correlation coefficient. It is used by a CORRELATION instruction (see section 4.6). See, also, Kendall (1948). If the numbers 4.0, 9.0, 7.0 and 1.0 are in column S3, the instruction RANKS of column 53 put in column 52 would put the numbers 2.0, 4.0, 3.0, 1.0 and 0.0 into the first five rows of column 52. NRMAX remains equal to 4. 4.2 Analysis Of One Column Of Data . STATISTICAL, SSTATISTICAL A STATISTICAL analysis instruction automatically prints (unless suppressed by using SSTATISTICAL), on one page, 43 statistics for a single column of data and also a frequency distribution. This page is followed by the printing of the data, the ranks of the data, the deviations (residuals) about the mean (average), the ordered observations and the differences between adjacent ordered observations. Pages 117 and 118 give the results of using a STATISTICAL analysis instruction on 39 actual measurements of the velocity of light given in Mandel (1964). The actual set of instructions used in this example is CMNITAB 6/4/69 VELOCITY OF LIGHT MEASUREMENTS SET VELOCITY IN COL 1 $ -299799.0 .4,. 6, 1,1,1,. 5,. 6,. 7,1,. 6,. 2, 1.9,. 2 .4,0,-.4,-.3,0,-.4,-.3,.l,-.l,.2,-.5,.3,-.l .2, -.2,. 8,. 5,. 6,. 8,. 1 ,. 1 ,. 2,. 5,. 7,. 8, 1.1 STATISTICAL ANALYSIS OF COLUMN 1 There are 6 different forms of STATIS, plus 4 more (SSTATIS) which suppress the automatic printing. STATIS is a frequently used shortened form of STATISTICAL analysis. The six forms differ depending upon whether (1) weights are or are not used, (2) there is or is not automatic storage of results, and (3) storage of results is in cor.secutive columns or in specified columns. Each form is differentiated from the others by the number of arguments (column numbers) in the instruction. The following table summarizes the number of arguments used in each form of the instruction. Number of Arguments in STATIS Instruction No Storage Consecutive Storage Specified Storage No weights (weights=l) 1 2 5 Weights specified -3* 3 6 * Last column number is preceded by a minus sign 115 1 3 11 17 12 21 13 47 14 34 When results are stored, the statistics appear in the first column, the ranks of the measurements in the second column, the ordered measurements in the third column and the residuals (deviations from the mean) in the fourth column. For example, In the instructions :- STATIS 1, 11 STATIS 3, 17, 21, 47, 34 Measurements are in column Statistics (page 1) Ranks (page 2) Ordered measurements (page 2) Residuals (page 2) Page 119 shows the order in which the statistics in the automatic printing are stored in the worksheet when the 2nd, 3rd, 5th or 6th forms of STATIS are used. The automatic printing gives some references to Natrella (1963). Page 119 gives additional references. In each case, a single reference is given, yet often many of the references in section 4.8 discuss the statistic. Page 120 gives the formulas used to compute each of the statistics. Note, some of the formulas are defined in terms of some of the other formulas. Special algorithms were developed to compute the confidence intervals for the mean and standard deviation (Hogben (1968)). Remark 1 . When weights equal to zero are used, the analysis is exactly the same as if the corresponding measurements were not used. Note, if in one case weights are not specified (all weights equal 1.0) and in a second case weights equal to 3.0 are used, the value of the sample variance in the second case will be three times as large as in the first case. Let the variance of a measurement be a 2 . = k.o 2 and let w. = 1/k. and a? = 2.3. ii ii i In the first case, k. = 1, and the sample variance estimates 2.3. In the second case, k. = 1/3 and the variance estimates' 6.9 (2.3 = 6.9/3). Remark 2 Sometimes it is desirable to compare the statistics from several sets of measurements. One way to do this is to use SSTATIS and put the results into adjacent columns. If the identification of each row is desired, titles can be read and printed using (for example) a 3A4 format specification. The following is an example of a set of instructions for 4 sets of 100 measurements. FORMAT A (3A4) READ A 43 cards into columns 11, 12 and 13 (43 cards with titles in card columns 1 to 12) GENERATE 1.(1. )43. into column 10 READ data into columns 21, 22, 23 and 24 (100 cards, 4 numbers on each card) SSTATIS 21, 31 SSTATIS 22, 32 SSTATIS 23, 33 SSTATIS 24, 34 FORMAT B (1X,F3.0,3X,3A4,1P4E15.6) RESET 43 PRINT B columns 10, 11, 12, 13 and 31, 32, 33, 34 116 HNOHHN O O O O O O \o fNI -i oo t-H •>* d Kl O rH i-H LO —I rg n LO ^t- LO CO LT) O O t'. o vn 1*1 c ; co r- lo \r> O ■* M3 Kl o ^- o LO CM o o o o o o o o o o o o O Ol O O O O I + + + \0 i-H Cn C71 ^H CTl Cn CT> O N CT) i— I lo to cn to + + + I -^ [^ oo t-^ OHOIO CT> LO C7> LO OO *3" C7i O LO LO LO OO NOON moo N^t N H en lo rg lo II II II II II II II II II II LO \0 O O 3 CO O" o o E-> co co cc ll, ll, eg eg O O O CO < < co co co w co < e2l_, q qpRqp SbSsswsS o o o o o o I I CT> Ol to to -£> *£> LO LO rsj og o o OOHH O O LO LO O O CTl CTi o o o o O O 00 OO o o to to OONN ■g- tJ L/) N ^- -* I I I LO tO CN1 CN1 • ai <3- i-i oo>o II CO ooo o r— o E-> CO CM LO ... CO ^f n lo eg i i o en co rg [-- rg o r-~ lo oo i— i to lo eg CM i—l eg (nj yo CO lo LO o o << ^3 "I w Oh CO S3 CO CJ WftZ Oh O « s .a co a w • u CL, CO >< o --. w O Q O Q ,_q . ,-q OS CO CO CO Oh Z Wh S 3 < >_ § Oi _D Pi Uh < Oi CO M CL, CO Q cl, o Uh cq 5 ouu o o u g^gio^ CO CO 2 2 SSco co co z II II CO e. & CO O + s CO S S 9 2 2 2 OS Q o u W • CL, CL, Q Ph S co 3 117 ooo ooo o o o ooo o o o o o o o o o o o 00 o o CTl o o cti o o 01 O O Ol o o OlOO Ol o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o ooo o o o ooo o o o ooo ooo o o I o 00 o O CTl O O CTl O O CTl O O CTl CD O CTl O O CTl O O o o o o o o o O O O CD O O CD CD O O CD O O O CD CD O O O O ^ CD CD CD CTl O CD O CTl CD CD CD Ol CD CD O CTl O CD O CTl CD CD CD CTl CD CD O CD CD O O O CD O CD o o o o o o o o o o o o o o o o O O O CD I I O O CD CD CD O CD CD O CD CD O CD CD O O O O CD CD O O CD CD O O O O O O o o o o o o o o CD CD o o o o I I o ^f- o O CTl CD O Ol O CD Ol O CD CTl O CD Ol O O CTl O t-H O ^H O CTl O i— IOt-HtHOOOOCTit-HOt-HOOCTIOOOt-HOOOt-HOOCMOOOOIOO OOOOOOOO I I O o o o o o i — -O CD O O O O hoooooo 1 — 'O CD O CD O O X O CD CD O CD CD O O O O O O O O O O O O O CD O CD O CD O O O O O o o o o o O CD CD O CD CD CD CD O O o o o o o o o o o o CD CD O O O O O O T 1 1 1 T 1 1 1 1 1 1 1 1 1 I— I 1— I 1 1 1—1 1 1 1 1 1 1 1 1 1 1 OOOOOOCDOOOOOOOOO I I I I I I I 1 I I t I I OOOOOOOOOOOlCTlOl OCDOOOOOOOOCTlCTlCTl OOOOOOOOOCDCTlOlOl OOOOOOCDOOOCT1CT1CT1 OOOOOOOOOOCT1CT1CT1 OOOOOOOOOOCTlCTlCTl OOOOOOOOOOCTlCTlCTl O O O O O OlOO CTl O O CTl O CD Ol o o CTl O O CTl O CD Ol CD CD o o o o CD O o o o o o o o o I I '■ + + + + ooo O CD O CD O CD d O O OOO ooo O CD O o a <z> <z> CD O O O O O O CD O CD O O CD O O O O O o o o o o o o o o o + + o o o o o o o o o o o o t-H Ol L/l ^f ^t" Kl Kl tM HOOHtMNNNNfO^^-l^LnLQLnLni/lLntsrNNtsOOOOOOHHHHr-fH t— < -J CJ c O^lD01^OC0N^l/100HHK)t0Nl^inH'^\0O\0NNOH00Kl^t-N01tNfflK)'tL^CTiaiN 2 N H H r- I CM CM CM CM i— It— I (M H r- I CM CM tO CM t-H to tO H tO rO tO Kl N ^ K) K) r- 1 OOOOOOOOOOO t— IOt-HCMt— It-Ht— ItH ( > 1 1 t^J 1—1 T 1 T 1 1 1 1 1 1 1 1 1 1 1 T 1 1 1 1 1 1 1 1 1 1 1 T— 1 ^~-J 1 1 1 1 1 1 1 1 1 1 l^J T 1 T 1 1 1 OOOOOOOOOOOOOOOOOOOOOOOOOOCDO r~- r-{ T— | rH t-H ■rt t-H rH T— ) i— i oi crj vO vn ■r. \o ^H vO .r: yo .- to 1 tO to K, to to ■-n K) to to tO vn CO •^ ■* •^• <r to ^t- •a- ^i- — LO LO r-. r-~ r-- r^ M- 1-^ r^ r^ r-~ CM CM CTl Ol Ol Ol r-~ rn Ol CTl CTl r~. X — oo oo 00 oo Ol oo 00 00 oo — — LO LO lo 00 rH CM LO vH cm ^OOlt^OlOOOOCTlOOOOOlOOOlCTlOlOOOl tOtOCOKlMKlrOtOKlKltOtOKlKltOK) ^j- \0 fO \0 vO \0 ^O UD vD '-O O vO *-0 ^O VO O t^UllDl/lt^l/ll/lL/lL/lL/lUlL/ll/lLflLJlL/1 oicmlocmcmcmcmcmcmcmcmcmcmcmcmcm coocmoooo^-oooooooo ^t-T— IOtHtHtHt— I t-H t-H t-H t-H t— It— It— I i- I t-H O0 t-H tO \D LO ^3- cm [~~ O Ol r— I O0 "* t-H t-H vO VD tO to >* ■a- r-- r- oi Ol 00 \0 \D tO tO ^r ■* Ol Ol CO CO I HOlt to ud *o *f LO to r-- cm -a- oi o r-. 00 t-H oi i f T- 1 T— I T-l ID \D \D to to to t-~ r— r— CTl Ol Ol 00 OO OO i cm r— i^j-cor^^rcor-^toi-ocMOi LO CM \£3 tO CO t— lfO(NN(NCONrO\0 L0L0lJ^L0LOOL0L0LOl^OC3OL0l^l/^L/lL0Lnu0OL0OOOL0OOOOL0Ol-nL0OOL0C3O & 3 oo >* LO LO LO tH <* CO LO •^ ^f rn ^t OO m CM t m CM -r ^H h-- >* ^ r~- r-- -f \T3 CM rH -t CM CO CO M" t-H CO CM CO CO C PC T— 1 CM to to to CM Csl CM f) CM T-H to T-H T-l T-H ^ T-l tH to CM CM to CM CM T— CM CM f] f) t-H T— 1 n CD n T-l T-H tH cr. tH T-H o ^J ^H t-H H ^H tH tH T-H -H ^H t-H tH t-H ^H — 1 T-l t-H tH t-H i-H tH t-H t-H t-H o o 1 _ o + C + o + o o O l o + O o o + o o O o o o o o 1 c o o 1 o 1 O 1 o o 1 O o 1 o 1 o 1 o 1 O r O 1 o 1 o + O Ol o • 5 O CTl o C J Ol o o o o c — : 3 o o : : c: o o :• ~ O o o o Ol o o o o '- ~j a o o , — ,o Ol C 3 o O CTl c ) oi I ) t 1 : -. n o o ' 3 C3 - 3 < 3 C 3 - 1 o C3 C 3 ( ) C 1 Ol ( 3 '1 c 3 C J C 1 c > c J CJ 1— 1 CD CTl o C 2 o O CTl O C 3 CTl o o ( -. o o r- — . o — . c-. o — o o : : CD O o o CD r ~. CD CD o o O o O c: *-^0 Ol : 1 -" O CTl : 3 n Ol ■ ) ~ O o n ~ n •—. ( i r- "1 ~ o n n ( 1 o rn o o C 3 C I' c i o ■ 1 t 3 XOCTlOOOOCTl O o Ol -. tr. o — tr. o <~ o r-> — n r> o o o r-, O o o o Ol C 1 o r- a a o C.3 o O Ol -. l c ; c^ O Ol O o Ol £ 3 o o c: CI Cl o C 3 C3 c : o C3 o — o o O CI o o Ol o C3 CJ o o o o o o Ol O c o O Ol o o Ol O Ol -_ o o o 3 O o s — C c_ o CJ o 3 o o CJ Ol o o o o a o o T-H ^UIHHHLnUIISHlONHN^O^fOO^MHHNl^MHNNWLnLnODNNNLnNOO 118 Row Name Of Statistic Reference N = LENGTH OF COLUMN, NRMAX NUMBER OF NON-ZERO WEIGHTS Section B1.6 Section 4.2 MEASURES OF LOCATION 3 UNWEIGHTED MEAN 4 WEIGHTED MEAN 5 MEDIAN 6 MID-RANGE 7 25 PCT UNWTD TRIMMED MEAN 8 25 PCT WTD TRIMMED MEAN Dbcon and Massey (1957) , 14 Brownlee (1965), 95-97 DLxon and Massey (1957) , 70 Dbcon and Massey (1957) , 71 Crow and Siddiqui (1967) MEASURES OF DISPERSION 9 STANDARD DEVIATION . 10 S.D. OF MEAN 11 RANGE 12 MEAN DEVIATION 13 VARIANCE 14 COEFFICIENT OF VARIATION CONFIDENCE INTERVALS 15 LOWER CONFIDENCE LIMIT, MEAN 16 UPPER CONFIDENCE LIMIT, MEAN 17 LOWER CONFIDENCE LIMIT, S.D. 18 UPPER CONFIDENCE LIMIT, S.D. LINEAR TREND STATISTICS 19 SLOPE 20 S.D. OF SLOPE 21 SLOPE/ S.D. OF SLOPE = T 22 PROB EXCEEDING ABS VALUE OF OBS T TESTS FOR NON-RANDOMNESS 23 NO OF RUNS UP AND DOWN 24 EXPECTED NO OF RUNS 25 S.D. OF NO OF RUNS 26 MEAN SQ SUCCESSIVE DIFF 27 MEAN SQ SUCC DIFF/VAR DEVIATIONS FROM WTD MEAN 28 NO OF + SIGNS 29 NO OF - SIGNS 30 NO OF RUNS 31 EXPECTED NO OF RUNS 32 S.D. OF RUNS 33 DIFF. /S.D. OF RUNS OTHER STATISTICS 34 MINIMUM 35 MAXIMUM 36 BETA ONE 37 BETA TWO 38 WTD SUM OF VALUES 39 WTD SUM OF SQUARES 40 WTD SUM OF DEVS SQUARED 41 STUDENT'S T 42 WTD SUM ABSOLUTE VALUES 43 WTD AVE ABSOLUTE VALUES Snedecor and Cochran (1967), 44 Brownlee (1965), 80 Snedecor and Cochran (1967) , 39 Duncan (1965), 50 Snedecor and Cochran (1967) , 44 Snedecor and Cochran (1967), 62 Natrella (1963), 2-2,2-3 Natrella (1963), 2-2,2-3 Natrella (1963), 2-7 Natrella (1963), 2-7 Fisher (1950), 136 Brownlee (1965), 344 Brownlee (1965), 223 Bradley (1968), 279 Bradley (1968), 279 Brownlee (1965), 222 Brownlee (1965), 222 Brownlee (1965), 224 Brownlee (1965), 227 Brownlee (1965), 230 Brownlee (1965), 230 Natrella (1963), 19-1 Natrella (1963), 19-3 Snedecor and Cochran (1967), 86 Snedecor and Cochran (1967), 87 Brownlee (1965), 296 51-60 FREQUENCY DISTRIBUTION Freund and Williams (1958), 17 119 r* d\ + -H X O 13 0) CD U <4H +J X +-> 4h DC H O •H 00 <D •H t/i 3 2 CD CD O iH rH o DO (1) u CD N CD SI m CM 13 c / — \ o C a; a: rH c o c OM~~ cm^ 1 r* x t/1 w •> — > •m X •H ■u t— I i-H X. 3 ■H 3 Ai J< ■P •H 0) 3 3 CD .— I D \^ ^^ » 03 rH w •H > OJ 1 1 i 1 ^v. 3 > r* r« 3 r-H ■1-1 CM 'X II (/) +-> C -H CD m 3 •H tX] H CD 3 s i X 3 — ^ DO I X 'X rH rc) S-. •H II •H •H S CT) ■H ■H •H CM -H ><, C -H X X t/i rH ^X, _>^ X X *? •H •H ■H •H •H ■s -V ■H rH 3 3 3 s — ' 3 3 II II rH .-i H rH rH T-\ ^! .ii -H -* -H II II II II II II C 1 c — a C -H C -H (3 -i-l C -H C tH X X 1 ' 1 — ' [XI tx] £ — J ■M C — J IX] s-^ 6 E o e 6 o o 13 CN1 o O 13 *t3 CD 13 CD CD CD s~l CD CD CD CD U rH CD CD S-H fl 4H 13 + !-. U MH Mh CD ^i MH 4H HH •H MH Mh O 4-1 <4H <4H O O •H X o o A" tn o Ifi en CD CD + tn tn CD CD CNl CD & CD CD CD CD !-i !/) <N CD S-. CD DO DC A, DO CD 4-> DO DO CD CD 13 Q ^ •H <D CD T) T3 „\" d X 3 r-H 1 13 13 i— 1 CM" 1 CNJ CD <r ;^_ /— \ t-H ^H m 1 S- Jf r""\ i— 1 r- 1 r^ cs u >* -a- ^ CM i d ^ ^, ^ 1 en ■H o ^ + ^-^ ^? / — s C] ■M +-> 3 ~d i 'rH 3 X, Si rH 4H rH 1 II i X DO DO +-> +-> •H + DC II 13 CN) ^! -H fi c •H ■H 3 3 A •H C -H 13 1 1X1 •H ■H 3 i X r^ +-> CD IX! O £ d t/5 en 3 •H iH •H D 3 •H r^ 13 ■H M X •H X m m X o C MH d X ^ •H •H 3 X 3 i — Ol CM CS] n! •H •H X 3 rH iX ■H 1 ^ 1 X en o ■H •H 3 X II 3 m tn ^H 3 X ^H CM <r <r ^ -H m m X X II ' X d M II + 1X1 II CM <N J>! -H o> ■M II II C -H •j- a <r .*! X ■H fi -H 3 O O C — J H a; d -h [xj rH cn X I>-4 i X 1— 1 r-H CN] X I ^ v — ' IXI + rH JiL + -* + X +J ■M 1 | rH V II ^ i 1 rH n rH II en ^4 ^ I — ] II •r-> II II X i n 1 II II II O 1 + II cn] 3 ' ' C -H ^J -H 1 X C -H CM o ~v ^ rH o rH d ^4 'X ' X X rX* t-~0 tXJ l/) (/} Pi I 1 in .-H i X IX U) t/) m 1 ' 4-> a. 120 STATISTICAL analysis of column (C) The STATIS instruction with 1 argument prints the comprehensive set of statistics without using unequal weights and does not store any results in the worksheet. / J I STATISTICAL analysis of column (C) , put statistics in (C) and next three cols / / / The STATIS instruction with two arguments performs an unweighted (equal weights) analysis and puts results in the column designated by the second argument and the three successive columns which follow. / J I STATISTICAL analysis of (C) , weights (C) , put in (C) and next three cols / / / The STATIS instruction ivith three arguments uses weights and stores results in four columns. Results are stored in the column designated by the last argument and in the three successive columns which follow. / J I STATISTICAL anal of (C) wts in (C) don't put in (-C) / / / This form of the STATIS instruction uses -weights and does not provide any storage of results. The last argument must be preceded by a minus sign to indicate that storage of results is not requested. This is the only instruction in CMNITAB which uses a negative column number. This technique was necessary to differentiate this form from the one above. / : J I STATISTICAL analysis of col (C), put statistics in cols (C) , (C) , (C) and (C) / / / The STATIS instruction with 5 arguments does not use (unequal) weights and stores statistics in the four columns designated by the last four arguments. / J I STATISTICAL anal of (C) wts in (C) , put statis in cols (C) , (C) , (C) and (C) / / / The STATIS instruction with 6 arguments uses weights and puts statistics in the four columns designated by the last four arguments. SSTATISTICAL analysis of column (C) , put statistics in (C) and next three cols / T I SSTATISTICAL analysis of (C) , weights (C) , put in (C) and next three cols / / / 121 / -J I SSTATISTICAL analysis of col (C) , put statistics in cols (C) , (C) , (C) and (C) / / / / —J I SSTATISTICAL anal of (C) wts in (C) , put statis in cols (C) , (C) , (C) and (C) / / / 4.5 Analysis Of Groups Of Data . ONEWAY, SONEWAY The instruction ONEWAY automatically prints a comprehensive set of results for analyzing a one-way classification. Although primarily an instruction for statistical analysis, ONEWAY has other uses in data manipulation. It can be used simply to determine the number of values in each of several groups. Use of Instruction . There are three forms of the instruction with 2, 3 and 6 arguments, which are all column numbers. The first argument is the number of the column containing the data or measurements. The second argument is the number of the column containing the corresponding group number (identification or tag) . Suppose six measurements have been made using three different types of equipment; two using the first, one using the second and three using the third type of equipment. Then, the group numbers, or tags, would be 1, 1, 2, 3, 3 and 3. These numbers should be used if the equipment (groups) have been labeled A, B and C. The group numbers should be integers.* Every integer from 1 to the largest should be represented; i.e., there should be at least one measurement in each group.* No diagnostic is given if these conditions are not met. If any tag is less than 1.0, it is set equal to 0.0 and the corresponding measurement is ignored. (The measurement is given the weight zero.) The group numbers do not have to be in increasing order. They can be in any order as long as it matches the order in which the measurements are entered into the worksheet. * These restrictions will be lifted in the near future. Restrictions . (1) The value of NRMAX must not exceed 2700. (2) The number of groups must not exceed 540. (3) The number of groups must be at least 2. (4) The number of groups must not exceed the number of measurements with positive tag. Violations of these restrictions result in the following fatal error: *** COLUMN NUMBER TOO BIG OR LESS THAN 1 (Restrictions (1) and (2) apply to NBS worksheet of size 12,500.) Automatic Printing . Each of the five sections of the automatic printing is described below under the headings which appear on the printed page as shown in the example on page 126. ANALYSIS OF VARIANCE The traditional analysis of variance for a one-way classification is printed, which shows the source of variation, degrees of freedom (D.F.), the sums of squares, the mean squares, the F-ratio for testing for differences between group means, and the significance 122 level (F PROB.) of the F-ratio. The usual assumptions of normality, independence and constant variance of measurement errors are made. See, for example, section 10.2 of Brownlee (1965) for a discussion of the statistical treatment of a one-way classification. If the significance level (F PROB.) for F = Between Groups Mean Square/Within Groups Mean Square is less than 0.10 and the number of groups exceeds 2, additional results are printed, which do not appear in the traditional analysis of variance. The Between Groups (means) sum of squares is separated into two components; the slope with 1 degree of freedom and the balance representing deviations about the straight line regression of group averages on group number. This information may or may not be useful. Often, time has an important effect, which may be revealed in these results. See section 11.12 of Brownlee (1965) for a discussion of some of the statistical aspects of this procedure. Following the above analysis of variance, results are printed for the Kruskal-Wallis non-parametric H-test for testing for differences between group means (averages) . The value of H is printed along with its significance level (F PROB.). The H-test uses the ranks of the measurements and avoids any assumption about the distribution of measurement errors. Details of the test may be found in section 7.7 of Brownlee (1965) and in the original paper by Kruskal and Wall is referenced therein. ESTIMATES The _ following items are printed for each group: the (1) group number, (2) number of measurements, (3) average (mean), (4) within standard deviation, (5) standard deviation of the mean, (6) minimum or smallest measurement, (7) maximum or largest measurement, (8) S(R) equal to the sum of the ranks of the measurements, and (9) a 95% confidence interval for the mean. Six significant digits are used to print items (3), (4), (5), (6), (7) and (9) in floating-point (scientific) notation. The values printed in items (1), (2) and (8) are exact. The results are printed with the group numbers (tags) in consecutive, increasing order; regardless of the order in which the numbers were entered into the worksheet. In the printing of the averages (means) and standard deviations, the letters H and L are put immediately after the high (largest) and low (smallest) values. If two values are tied for the largest (smallest), the letter H (L) is put immediately after both values. If the number of measurements in a group equals 1, ESTIMATE NOT AVAILABLE is printed under WITHIN S.D. and S.D. OF MEAN. Also, ********** TO ********** appears under 95PCT CONF INT FOR MEAN. The number of measurements, mean, minimum and maximum are also printed for the total number of measurements. In addition, the within standard deviation, standard deviation of the mean and 95% confidence interval for the mean are printed for three different models: the fixed effects model (Model I), the random effects model (Model II), and the model which assumes that all the groups are the same so that in effect all measurements were taken from a single group. The confidence limits are formed by taking the grand mean and first subtracting and then adding the product of the percentage point of Student's t-distribution and the standard deviation of the mean. Let k = number of groups and n = total number of measurements (with positive tag). Then, the standard deviation of the mean is the square root of the variance of the mean formed as follows: Model Variance Variance of Mean Degrees of Freedom I v = Within groups mean square v/n n-k II v = ^ =1 (x.-x)7(k-l) v/k k-1 Ungrouped v = Total mean square v/n n-1 123 PAIRWISE MULTIPLE COMPARISION OF MEANS. This, section only appears if the significance level (value under F PROB.) of the Between Groups F-ratio is less than 0.10. The Newman- Keuls-Hartley procedure is not performed if the number of measurements, with positive tag, is less than 4 plus the number of groups. The purpose here is to divide the averages into groups in such a way that all averages within a group are not significantly different at the .05 significance level, whereas averages in different groups are significantly different. Two different procedures are used; the Newman-Keuls-Hartley method and the Scheffe method. The two methods are similar, but not identical and frequently give slightly different results. The Newman-Keuls-Hartley method is described in section 10.6 of Snedecor (1956) and section 10.8 of Snedecor and Cochran (1967). The Scheffe method is discussed in section 10.3 of Brownlee (1965). Groups are separated by a string of 5 asterisks. If adjacent groups have no average in common, the two groups are separated by two strings of 5 asterisks. Both methods require percentage points of the studentized range. Here, a good approximation developed by John Mandel is used. The Newman-Keuls-Hartley method is designed for use when the number of measurements in each group is the same. An approximation is used in comparing two means by setting 1/n = ^(l/n.+l/nj) TEST FOR HOMOGENEITY OF VARIANCES. The usual analysis of variance for a one-way classification assumes that the variance of each group is the same. This section provides information for assessing the validity of this assumption. Small values of the significance level P indicate lack of homogeneity of variance. Cochran's C is discussed on page 180 of Dixon and Massey (1957) and in more detail in Chapter 15 of Eisenhart et al. (1947). The Bartlett-Box F-test is a modification of Bartlett's test which uses the F-distribution rather than the chi-squared distribution and is less sensitive to non-normality. It is discussed on pages 179 and 180 of Dixon and Massey (1957). A table of critical values of maximum variance/minimum variance for equal sample sizes is given on pages 100 and 101 of Owen (1962). If either P value is less than or equal to 0.10, the following is also printed APPROX BETWEEN MEAN F-TEST IN PRESENCE OF HETEROGENEOUS VARIANCE followed by the F-value and significance level P. This approximate F-test for testing for differences between means is described on pages 287-289 of Snedecor (1956). Note, this information does not appear in the example on page 126, because both P values (significance levels) exceed 0.10. MODEL II - COMPONENTS OF VARIANCE. This is the usual analysis of variance estimate for the between component in a random effects model (Model II), See, for example, sections 10.6 and 10.7 of Brownlee (1965). Provides the comprehensive automatic printing described above, but does not give any automatic storage of results. The following set of instructions, to analyze the data on page 315 of Brownlee (1965), give the automatic printing shown on page 126. 124 CMNITAB 2/22/71 EXAMPLE OF ONEWAY - BROJVNLEE DATA PAGE 31S SET data in column 1 83 81 76 78 79 72 61 61 67 67 64 78 71 75 72 74 SET group number in column 2 111111 2 2 2 2 2 3 3 3 3 3 ONEWAY with data in col 1 and group no. in col 2 / ~~ ' ~ ~~~ ~~~~ ' V / ONEWAY for (C) group no in (C) put statistics in (C) and next three columns / / _____ / This form of ONEWAY, with an additional argument, provides automatic storage in addition to the automatic printing. If the last column number is X, then results are stored in the four consecutive columns X, X+l, X+2 and X+3 as follows: Column Contents X group number X+l number of measurements in each group X+2 group averages (means) X+3 group standard deviations These are the results in the first four columns in the ESTIMATES section of the automatic printing. The instructions, applied to the above example, ONEWAY 1,2 and store in col 11 and next three cols PRINT columns 11, 12, 13 and 14 would yield COLUMN 11 COLUMN 12 COLUMN 13 COLUMN 14 1.0000000 6.0000000 78.166666 3.8686776 2.0000000 5.0000000 64.000000 3.0000000 3.0000000 5.0000000 74.000000 2.7386128 I ^ ' ~ ' 7 I ONEWAY for (C) with (C) , put group in (C) , number in (C) , means (C) , s.d. (C) / / , / Same as above; except the last three columns for storage are specified by the user instead of implied by the instruction. The last four column numbers do not have to be either consecutive or equal. Storage of results is done sequentially in the same order as in the form above. Hence, if any column number is used more than once, results stored first will be erased. The instruction ONEWAY 1,2 and 11, 11, 12, 12 would put the numbers in each group in column 11 and the standard deviations in column 12. The group identification and means would not be stored. 125 r^ o LO O co en o o CNJ -^- CN] o o + + CN] r-H CM rH oo> Wo + co en + tH CD LO tO N l/) O tO to -^r o to LO i to CN] \0 LO CO o o + + NHMMN O cn LO O O + CO CT) + + i — I O lO to LO "^■LoonN CD ^t O tO tO i— I • • 00 CT) LO \0 LO O LO \D ^t O lo i-H r^ u O * ffl + * H o # o * W o ■K U-i — fc ** * i ^ * ■K 126 SOMEWAY for (C) group no in (C) put statistics in (C) and next three columns / T I SONEWAY for (C) with (C) , put group in (C) , number in (C) , means (C), s.d. (C) / / / 4.4 Analysis Of Two-way Table . TWOWAY, STWOWAY The TWOWAY instruction produces an automatic printing of an analysis of variance for a two-way crossed classification without replication; fixed effects, infinite model. One form of the instruction is for use in the balanced case (4 arguments) and one form for use in the unbalanced case (5 arguments) . Before proceeding with a description of the two forms of the instruction, a very brief statistical background is given, which in turn will be related to an example. Remarks which hold for both forms of the instruction follow the statistical background. Remarks which pertain to one form only are given in the description of the instruction. Statistical Background . Suppose we have a two-way table with three rows and four columns, as illustrated, for measurements y . . : Row 1 Row 2 Row 3 A common statistical (additive) model in this situation is: y. . = y + p. + Y- + £• ., where i = 1, 2, ... ,r=3; j = 1, 2, ... ,c=4; the e's are assumed to behave like independent, random, normal variables with mean zero and variance a 2 . Also, the constraints £i=l p i = ^=l Y j = ° are imposed, so that Column 1 Column 2 Column 3 Column 4 y il y i2 y i3 y i4 y 2 i y 22 y 23 y 24 y 3i y 32 y 33 y 34 P 3 = - P-l " P 2 and y 4 = The parameter u represents the overall mean, p. represents the effect of the ith row, the parameter y. represents the effect of the jth column. and 127 In the least squares framework this model can be rewritten in the equivalent form y k = e i X lk + S 2 X 2k + 2 3 X 3k + 6 4 X 4k + B 5 X 5k + S 6 X 6k + \ where k = 1, 2, ... , rc=12, and = V, T '2' 'V 3 5 " Y 2 ** h X 2k = 1, X 3k = o, o, 1, -1, -1, are parameters to be estimated and the x's are fixed known constants. The constant x is identically equal to one, if y is in the first row; if y is in the second row; if y. is in the third row; ' k the constants x,. , x r , and x., are defined in a similar manner. The constants x„, and x_. 4k* 5k 6k 2k 3k equal -1 for each measurement in the third row, because of the constraint imposed upon the row effects . The above model can be conveniently expressed in matrix notation as y = Xg + e. See pages 257' and 258 of Draper and Smith (1968). For clarity, the matrices are written out in full below. MATRIX NOTATION ~>n~ y l2 y±3 = y u y 2 i y 22 y 23 y 24 y 3 i y 32 7 33 /34_ V P l P 2 Y l Y 2 Y 3 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 p2 ~ e ll~ e 12 6 13 e 14 e 21 e 22 e 23 e 24 e 31 e 32 6 33 _ e 34_ These matrices can be clearly generalized for arbitrary values of r and c. Note, the design matrix, X, is constructed with the constraints on row and column effects imposed. Use of Instruction . "Let the first four arguments of the instruction be denoted by r, c, Y and X, all 128 integers. The first two arguments, r and c, specify the number of rows and columns in the two-way table. The third argument, Y, is the column containing the measurements. Data are entered into column Y one row at a time so that all the measurements in row 1 are entered first, then all the measurements in row 2, and so on; as indicated by the vector y in the MATRIX NOTATION table above. The fourth argument, X, designates the first column ivhere automatic storage begins; see below. Restrictions . The following restrictions apply to both forms of the instruction. Additional restrictions on the use of weights are given in the description of the second form of TWOWAY. (1) The product re must equal NRMAX. (2) Both r and c must exceed 1. (3) The column number Y must be less than the column number X, (4) (X+r+c+2) must not exceed the number of columns in the worksheet. (5) 2(r+c+4) must not exceed the number of rows in the worksheet. (6) For s = smaller of r and c, t = larger of r and c, the following table shows the largest permissible value of t for each possible value of s: 2 51 "7 31* 12 22* 3 45 8 29* 13 20* 4 40 9 27* 14 19* 5 37 10 25* 15 18* 6 34* 11 23* 16 17* The asterisk indicates that the worksheet has to be redimensioned for the largest tables. If any of the above restrictions are violated, the following fatal errors will occur: (1) *** ILLEGAL SIZE ROW NUMBER (2) *** ILLEGAL ARGUMENT ON CARD (3) *** ILLEGAL ARGUMENT ON CARD (4) *** DEFINED MATRIX OVERFLOWS WORKSHEET (5) *** DEFINED MATRIX OVERFLOWS WORKSHEET (6) *** INSUFFICIENT SCRATCH AREA Automatic Printing . Different analyses of variance are printed for each form of the instruction. See the descriptions and examples below. The F-ratio is always the MEAN SQUARE on the same line divided by the RESIDUAL MEAN SQUARE with the corresponding degrees of freedom. The F PROB. values are the significance levels of the F-ratios. They give the probability that the observed F-ratio will be exceeded, if in fact there are no differences between row or column effects, as the case may be, i.e., if all row (or column) effects equal zero. Each form prints a table containing the effects, the estimates of the effects and the standard deviations of the estimates. The standard deviations of the estimates are functions of the residual standard deviation. If the additive model is correct and if the assumptions concerning the measurement errors are correct, then the residual standard deviation is an estimate of a. Note, the row (column) estimates are estimates of effects, not means. The estimate of a row (column) mean would be the sum of the estimate of the mean and the estimate of the row (column) effect. The second page of the printing contains a table of standardized residuals; standardized by dividing each residual by its own standard deviation. See section 4.5 for further information on standardized residuals. Each residual is printed with two digits after the 129 decimal point. If the number of columns, c, exceeds 15, the printing of a row of residuals continues on the next line. A string of six asterisks indicates the residual is equal to or greater than 1000.00. (F6.2 format used.) When this happens, it is a sign of some difficulty; either there is an error in the set of instructions or there is some problem with the data. All printing is done using either "readable" or fixed formats. Automatic Storage . The instruction automatically stores results in (r+c+3) consecutive with column X and continuing through column (X+r+c+2), as follows: columns, starting (1) The (re) x (r+c-1) design matrix in columns X through (X+r+c-2), inclusive. (2) Coefficients in 2(r+c+4) rows of column (X+r+c-1). (3) Residuals in re rows of column (X+r+c) . (4) Standard deviations of predicted values in re rows of column (X+r+c+1). (5) Fourier coefficients in 2(r+c) rows of column (X+r+c+2). The design matrix is very useful for using a FIT instruction in further work; see examples below. The values in the last four columns are essentially the same as those which would be obtained using the appropriate FIT instruction. The coefficient column (X+r+c-1) contains 4 additional values; the estimates and standard deviations for the rth row and cth column. As a consequence of the constraints on the row and column effects, the estimates of the rth row effect and the cth column effect are the negative of the sum of the first (r-1) row estimates and the first (c-1) column estimates, respectively. Note, 2(r+c+4) or 2(r+c) may exceed NRMAX. Consequently, NRMAX may have to be reset in order to print the entire contents of the Coefficients and Fourier Coefficients columns. The column of coefficients contains: Rows 1 2 to (r+1) (r+2) to(r+c+l) (r+c+2) (r+c+3) to (2r+c+2) (2r+c+3) to 2(r+c+l) 2(r+c)+3 to 2(r+c+4) Description No. of Rows estimate (coefficient) of mean (effect) 1 estimates of the r row effects r estimates of the c column effects c standard deviation of the mean 1 standard deviations of the r row estimates r standard deviations of the c column estimates c the six values: 6 number of non-zero weights number of vectors in design matrix - (r+c-1) residual degrees of freedom residual standard deviation residual variance multiple correlation coefficient squared. In the Fourier coefficients column (X+r+c+2), using SS for sum of squares, the following quantities are stored: (i) Row 1 gives the SS due to the mean. (ii) The sum of rows 2 to r gives the Between Rows SS. (iii) The sum of rows (r+1) to (r+c-1) gives the Between Cols SS. (iv) Row (r+c) contains the Residual SS. (v) Row (r+c+1) contains the Total (uncorrected) SS. (vi) Row (r+c+2) contains the first Fourier coefficient. (vii) Rows (r+c+3) to (2r+c+l) contain the (r-1) row Fourier coefficients. (viii) Rows (2r+c+2) to 2 (r+c) contain the (c-1) column Fourier coefficients. Note, the Total (uncorrected) SS is the (weighted) sum of the squared measurements. The TOTAL SUM OF SQUARES in the automatic printing is the corrected Total SS, i.e., the uncorrected Total sum of squares minus the sum of squares due to fitting the mean. 130 Computing Method . A least squares approach is taken and the computing algoritlim is essentially the same as that used in the FIT instruction (section 4.5). In this way, balanced tables and unbalanced tables are treated similarly, to the advantage of the user. In a restricted sense, TWOWAY is special case of FIT. A balanced two-way table (first form of TWOWAY) is a special case of an unbalanced table using all weights equal to one. The results are believed to be very accurate. In the event the sums of squares in the analysis of variance do not sum accurately, the following informative diagnostic is given: * SUM OF SQRS DO NOT ADD UP-ABS. VALUE OF (TOTAL-ROW-COL-RES) /TOTAL EXCEEDS 5.E-7 TWOWAY analysis for (r) by (c) table, data in col (C) put in (C) and succ. cols. Automatic Printing . This form of TWOWAY also prints an analysis of variance to perform Tukey's test for non- additivity. The instruction TWOWAY assumes the measurements can be represented by an additive model. It is a well known, yet often overlooked, fact that additivity of effects depends on the scale of measurement used. Since the scale of measurement is often, at least in a certain sense, arbitrary, non-additivity is often present. Tukey's test enables the user to assess the adequacy of an additive model. Small values of the significance level, F PROB., indicate the presence of non-additivity. If the model is multiplicative, it may be appropriate to reanalyze the data using some form of transformation. Tukey's test is described in Graybill (1961), starting on page 324. Example . Pages 132 and 133 show the automatic printing and set of instructions to analyze the 3x4 table on page 331 of Graybill (1961). Notice that the data after the SET instruction look like a two-way table, but are entered into the worksheet as a single column. After the TWOWAY instruction on page 133, the instruction FIT 1, 1.0, 6, 11 *** 16 would provide additional information. In particular, it would give (i) the four per page plot of standardized residuals to supplement the table given by TWOWAY, (ii) print the predicted values, and (iii) print the variance-covariance matrix, which could be used to calculate the variance of linear combinations of the row or column estimates. Automatic Storage in Example . The fourth argument of the TWOWAY instruction on page 133 is X=ll. Hence, the design matrix is stored in the 6=r+c-l columns 11 (X) through 16 (X+r+c-2), the coefficients are in column 17, the residuals in column 18, the standard deviations of predicted values are in column 19, and the Fourier coefficients are in column 20. A print of columns 11 to 16 would reveal the same design matrix shown as the matrix X in the MATRIX NOTATION table on page 128. Note, column 11 has values in 22 (2(r+c)+8) rows and column 20 has values in 14 (2(r+c)) rows, whereas NRMAX=12. The numbers under ESTIMATE on page 132 are stored in row 1, rows 2 to 4, and rows 5 to 8 of column 17. The numbers under STD. DEV. are stored in rows 9, 10 to 12, 13 to 16, and 20 of column 17. Rows 17, 18, 19, 21 and 22 contain the numbers 12., 6., 6., 3.8055554 and .58421852, which are the number of non-zero weights, the number of vectors in the design matrix, residual variance and squared multiple correlation coefficient. 131 _ I O CN1 CN) E-h en ^H cq < § I g (73 mnn- to lo lo Kl LO LO tO LO LO 3 tO LO LO c/ oo o o CO LO to CO tO oo to © vD O N OO \C \0 f^ ^D kO ^O tO vO \0 \D ^ MD \o lo ^f en oo lo CO ^O LO en cm lo ^O LO LO O OO o OlOl oo £ t~- CM tO > H Q § 2 O 2 a: o U-, \o Cn tO CM H oo **■ to CO m KltO W ^ o to H O CM tO en ai oo E3 tO ^" ^f CTl CTl CTl to to to o o o «=d- ^- ^~ \0 \D MD CTl CTl CTl c--» r-- c-- to to ^j- ^j- O ^O O vO t— ) t— 1 r~\ t— I CTl CTl CTl cti to to to to LO LO LO LO r~- r-» i-- c--. CTl CTl CTl CTl CNJ tO MD i— i yD t~- .H r-~ nvoio en 'O to o w vO CO vO \£> en *o to o H vO IICiO en vo to cd VO tO vjD \0 en ^o to o kO tn vO\D en o to o ^H OO HlO "3- tH OO LO H CO w «tf o ^f ^o n -^ o n CM iH 1 1 CM H H HtnvD CO CO 3 -J Q O z 2 <i HMD PPrnt- WW wo Bffl2h fc E-i CO Q W < § U 3 2 a Z 5^ s gg o u g: 3 3 — 1 -J "-J J o o o o o o o c; a pc u u u u 132 3S 8 - 3 p > Q 3 a, u Ov] 2 o cm H E-i U in S Q o « H 2 CO o E- |H LD 2 J O p~| u co < 2 3= >— ' PJ CO* J CO I CO r-H M O >" <CMOH< E- 1 E- Q co H 133 The numbers under SUM OF SQUARES on page 132 are obtained from the values in column 20. The Between Rows SS (7.1666665) is the sum of the values in rows 2 and 3. The Between Cols SS (24.916666) is the sum of the values in rows 4, 5 and 6. The Residual SS is in row 7 (r+c). The corrected Total SS (54.916668) equals the uncorrected Total SS (125.00000) in row 8 (r+c+1) minus the SS due to the mean (70.083333) in row 1. Remark . The following three instructions, after TWOWAY, would print a table of predicted values similar to the table of standardized residuals. SUBTRACT col 18 from col 1 and put in col 2 MMATVEC column 2 into 1,31 size 3x4 MPRINT array in 1,31 of size 3x4 / J I TWOWAY anal, for (r) by (c) table, data in (C) store from (C) on, wts in col (C) / / / This form of TWOWAY has an additional argument, the last denoted by W, to specify a column of weights. It is useful for analyzing experiments with missing observations, balanced incomplete block designs, partially balanced incomplete block designs (intra-block analysis), etc. or even undesigned experiments. A useful procedure is to assign a weight of 1 to each measurement present and to assign a weight of if a measurement is missing. If each cell in a table contains more than one measurement, TWOWAY can be used with the averages of each cell and using the number of measurements in each cell as the weight. Weights are entered into column W, one row below another, just as is done for the measurements in column Y. Restrictions on Weights . (1) The column number W must be less than the column number X. (2) The column number W must not equal the column number Y. (3) Weights can not be negative. (4) There must be at least one positive weight in each row. (5) There must be at least one positive weight in each column. (6) The number of weights equal to zero must be less than (r-l)(c-l). Violations of these restrictions result in the following error messages. In each case, the instruction is not executed. (1) *** ILLEGAL ARGUMENT ON CARD (2) *** ILLEGAL ARGUMENT ON CARD (3) *** NEGATIVE WEIGHTS MAY NOT BE USED (4) * ALL WEIGHTS ARE ZERO. COMMAND NOT EXECUTED (5) * ALL WEIGHTS ARE ZERO, COMMAND NOT EXECUTED (6) * DEGREE IS LARGER THAN NO. OF NON-ZERO WEIGHTS. Caution. The above restrictions can be met and yet there exist patterns of weights which cause difficulty and no diagnostic is given. The matrix X'WX (X the design matrix and W the diagonal matrix with weights on the diagonal) can be singular. We know of no solution to this problem. These situations are not likely to occur, but they can happen. Unusually large or small values of the coefficients and/or standard deviations may indicate trouble. If the user is in doubt, the matrix X'WX can be examined (inverted) or the *ACC. DIGITS column can be checked in the automatic printing after using the appropriate FIT instruction. An example (provided by B. L. Joiner and J. R. Rosenblatt) is one where the weights for a 3x4 table are as follows: 134 Here, the singular X'WX matrix is Row/Column 1 2 2 4 1 1 2 1 1 1 3 1 1 1 s ~7 -2 -1 o" -2 4 3" 2 3 6 -1 2 3 2 2 2 4 2 2 2 4 This means that one of the row or column effects is not estimable. Clearly, the effect of row 1 plus column 1 is estimable, but the row 1 and column 1 effects, separated, are not estimable. (The rank of XMVX is 5 because column (6) is the linear combination of columns (1) through (5): 3(6) = - (l)-8(2)+4(3)+9(4)-3(5) .) The instructions TWOWAY 3x4, 11, 21, 12 FIT 11, 12, 6, 21 *** 26 would show -1.75 in every row in the column headed *ACC. DIGITS, which is a definite sign of trouble. If MINVERT were used to invert the (X'WX) matrix the error bound would be -.3+10; again, indicating trouble. Automatic Printing . The automatic printing shows two analyses of variance, rather than one, necessitated by the unbalance in the table. The first analysis shows Rows adjusted for columns and Columns unadjusted. The second analysis shows Rows unadjusted and Columns adjusted for Rows. After the printing of the analyses of variance, a line is printed which tells the number of non- zero weights used and the number of weights equal to zero. In this form of the instruction, Tukey's test for non-additivity is not performed. The printing of the coefficients and their standard deviations has the same form as that for the balanced case. In the table of standardized residuals, .00 appears in each cell for which the weight is zero. Automatic Storage . The automatic storage for this form of TWOWAY is the same as that described above. Ifcwever, since the two-way table is unbalanced, the Fourier coefficients have little meaning. The Residual Sum of Squares, the Total (uncorrected) Sum of Squares, and the Sum of Squares due to the mean are in the three rows (r+c) , (r+c+1) and 1. All other numbers in the column should be ignored. Example . Pages 136 and 137 show the automatic printing and set of instructions to give an intra^- block analysis of the data from a partially balanced incomplete block design described on page 561 of Kempthorne (1952). There are 9 treatments and 9 blocks, with 3 treatments in each block. However, the data following the SET instruction are arranged like a 9x9 table with 9 treatments per block. The value zero is assigned to a treatment which does not appear in a block and correspondingly a weight of zero is assigned. Here, blocks are rows and treatments are columns. Hence, in the automatic printing, the first analysis is for Blocks (rows) eliminating treatments and Treatments (columns) ignoring blocks. This is the analysis on the right hand side of the analysis on page 562 of Kempthorne (1952). The second analysis is for Blocks ignoring treatments and Treatments eliminating blocks. 135 fll to ■* to O i-H O rsi oo r^ r> *o ** to rv t-H ,-H to to «* to to 00 "3- ^H o r*- O^ r-i to ■^- lo r-. vO **■ rO O N tO lo r-J to < >-! H < < s n 1 o Q o Km CO t^ m r-. lo r-~ 2 u < N H Kl Ol O LO O t-I to Ol to CT> O0 M o H 3 CTi 00 t^ LD rH \£) E^ LO i C CM i-H to 00 LO CT> to 00 W gj CO to LO to tH Oh- tOH KH > PC t^ ^3- to LO CM U\ to LO m o «3" t-H lH t^ LO t-H [~- ex p-, I— 1 t-H C-J r-j rg &H o § o co CO OOOOOOOOO OOOOOOOOO c^(NjpJc-or^(N)CN3r-j<M rsi(Ni>or-jrgrs]t>ot>j<Ni o oi lo r-. en cnj r-j Mco^tnNtoocoLn tor-Joou-i^a-LOc-j^o** th to <— i t--. tO^OlQ0L0\OH00't r^tHLooiHOcriTHr^ r-.T— iloot— ioo^i— i r^ ocotN^co^tLnwo ^^rJ-NCTiMstOO') L0C7lHLnON01NCT) TNN CO CO O O CO 00 O vO co co co co S -J S i-J a o pn t_> co c£ O co z z<! 2 ^ tu m w 3 U03 y ran rwi SID P 1 TWE nvj SID TAI - W W m « P3 S O UMBO mnSn CO H HNtO'tU'lONCOtTl ■ "5- ■=- "S ic^c^c^c^pipiDicc: INtO^LOOtNQOCn 136 T— ( ►J w bi o z u g S ^oovooocnoo s fc co CO CO >H 5» 3 a co a 5 § o OtOOHCOOO o 5 3 a < o u ?: PC, H ( > < ro O O O r-\ O O O o >- n J in sd" O pa H c > C/l O O CD - a •7 co" OOOONOO LO t-H < M >- Z LO LO og U, if o [ ) 13 § < o LO O O O O O LO oo U P to ** H z < m o >H u Q n < o O CO O O O ^3- O o cc H ^- CO to > o W > H CO Q § Q ^ i-HCNjto-^-Ln^or--ooai 137 Remark . The variance of the difference between any two treatment estimates, X and Y, is Var(X-Y) = Var(X) + Var(Y) - 2Cov(X,Y) The variances and covariances can be obtained by using the sixth form of FIT (section 4.5). The following instructions after TWOWAY on page 137 would put, 3.4431299, the standard deviation of the difference between the 3rd and 5th treatment estimates (12th and 14th estimates) in column 62. SFIT 10, 11, 17 vectors in 20 *** 36 and put in 37, 37, 37, 37 and 1,41 ADD the value *2,52* to the value *14,54* and put in column 60 MULTIPLY the value *12,54* by -2.0, mult 1.0, add col 60, put in col 61 SQRT of column 61 put in column 62 (Note, here we do not need to know whether treatments 3 and 5 are 1st or 2nd associates.) STWOWAY analysis for (r) by (c) table, data in col (C) put in (C) and succ. cols / : / I STWOWAY anal, for (r) by (c) table, data in (C) store from (C) on, wts in col (C) / / / 4.5 Regression . FIT, POLYFIT, SFIT, SPOLYFIT There are six different forms of FIT and POLYFIT and five different forms of SFIT and SPOLYFIT. Brief descriptions of the different forms of FIT and POLYFIT are given on pages 152 to 154. These descriptions are preceded by a detailed discussion under the titles Weights , Restrictions , Example , Automatic Printing , Automatic Storage , Computing Method , and Remarks" . The instruction FIT performs a least squares analysis (regression) of a set of data. Measurements y., i=l, 2, ... ,n=NRMAX, are assumed to be functionally related to k vectors x , x , ... ,x of fixed, known constants. The statistical model y. = 6-,x., . + B x„. + . .. + 6. x. . + e., ' i 1 li 2 2i k ki i' is used, where the 3's are parameters (coefficients) to be estimated and the e's are measurement errors. The measurement errors are assumed to be independent with mean zero and variance a 2 . In an unweighted analysis, a 2 = a 2 , a constant. In the analysis of variance, it is further assumed that the errors are normally distributed. A summary of the formulas and notation used in this section is given on page 144. Since POLYFIT is actually a special case of FIT, the tiiio instructions are described jointly. In the polynomial of degree d 2 d y. = a + a,x + a„x^ + ... + a,x + e., / i o 1 2 d i if x is set equal to x and a is set equal to g , r = 0, 1, ... ,d, the model is equivalent to the one above for FIT with d = k+1. 138 Weights . Weighted least squares is performed. The second argument of the instruction designates the weights to be used. If an unweighted analysis is desired, i.e., equal weights all equal to 1.0, set the second argument equal to 1.0. Otherwise, use a column of weights. It is assumed that the measurement errors are normally and independently distributed with variance given by V(y.) = a? = k.a 2 . w x 1 1 In an unweighted (all weights = 1.0) analysis, k. = 1.0 for all measurements and the measurements have constant variance. In the presence of heterogeneous (unequal) variance, the "best" weights to use are w. = 1/k.. If the variances a? (or k.) are known, there is no a IX X V X problem. If the variances are unknown, the weights have to be estimated. If precise estimates are unavailable, the advantage of using weights is dubious. Note, an analysis with k non-zero weights is identical to the analysis obtained using only the measurements with non-zero weights. It is as though the measurements with zero weight were ignored. Restrictions . (1) Negative weights may not be used. (2) The number of non-zero weights must be greater than or equal to the number of vectors fitted (k or d+1) . (3) Below are the maximum number of measurements, NRMAX, which can be used for a given number of vectors, k. In FIT, k is the third argument. In POLYFIT, k equals the degree (3rd argument) plus 1. (Values given are for NBS computer.) k NRMAX k NRMAX k NRMAX k NRMAX k NRMAX k NRMAX 1 2246 11 813 21 463 31 293 41 187 51 109 2 1922 12 761 22 441 32 281 42 178 52 103 3 1678 13 714 23 421 33 269 43 170 53 96 4 1487 14 672 24 402 34 257 44 161 54 90 5 1335 15 634 25 384 35 246 45 153 55 83 6 1209 16 599 26 367 36 235 46 146 56 77 7 1104 17 567 27 350 37 225 47 138 57 71 8 1015 18 538 28 335 38 215 48 131 58 65 9 939 19 511 29 321 39 205 49 123 59 59 10 872 20 486 30 307 40 196 50 116 60 *** Violations of these restrictions result in the following fatal errors, respectively: (1) *** NEGATIVE WEIGHTS MAY NOT BE USED (2) *** DEGREE IS LARGER THAN NO. OF NON-ZERO WEIGHTS C3] *** INSUFFICIENT SCRATCH AREA Example . The following set of instructions produce the automatic printing on pages 140 to 143 to perform a straight- line regression using the data in section 6.2 of Snedecor and Cochran (1967). OMNITAB 6/9/69 EXAMPLE OF STRAIGHT LINE FIT, SNEDECOR, COCHRAN PP 135-140 SET Y = MEAN SYSTOLIC BLOOD PRESSURE IN COL 1 114, 124, 143, 158, 166 SET X = MIDPOINT OF AGE CLASS IN COLUMN 3 35, 45, 55, 65, 75 DEFINE 1.0 INTO COLUMN 2 FIT COL 1 WTS 1.0, 2 VEC'S IN COLS 2 AND 3 139 to CJ3 O O O CD O o o o o o o o o o o OCOOIOON en 1*0 t-o o 1^3 ^t- ^ 0> O O O CTi C71 CD CD CD Ol -1 OlOOOOt w OlOOOOl 0100001 to lo c*j o t~-j lo K) (N tO (N to Uh to u o w CTl OO O 00 0"> o r> O CO O 00 o cj 3 KO to K) rO \D J — 5 C7S VO ^J" ^O CTl n o o > ro i--- *— 1 r-^ ro Qi u u CD Q HNLTlIs H o O in t^ ^ N l/l u Z z CD Q 1-1 O O Q E- § NH H H N to O to Pu — O tO -J < 3 iH — £ II U-, Q > to pj O O O O O O o£ E3 W CD O O O O 1 , o 1 — I E- to O CD O CD CD J — s u tq O CD O O O Di u 3 ■^- C\] O CO \D s O 1 — 1 Q O Q 3 »0 N H ^ OO u § Pi > t— i r-4 *d- lo o E- w e« ^H ^H i— ( ^ t-H O, !~J P-, 1 H t^J 2 to tO O 2 P-, Uh o 3 o LO w c/z CO O ^H H E- U O O O O O LO u Z CD O CD O O S i — i CD O CD O O w ] — ' to < g CD O O O O J Uh =3 < g O O O O O OS s ,-J ^J- "3" to CO \o <£> g o u h n ^r m\o rH ^H iH ^H t-H en M z ■O < H to < O O O CD O o o o o o o o o o o O O CD O CD O CD CD O CD O O O O O CVl K) ^" LO 140 141 I CO Si — I PL, , — N O i-H PL, O O O O PL, o r-- o en en II en f» CO LL, CO O tq O CO O CO t-H CJ -* Bh O rH bT o o o o PL, I / N to r-^ o CO en II i-i r~ U-, o tq t^ o 8 O to CO u •* H en E PL, OS o £ o H CO U S w > 3 to CO to CO a en to CO Q en to pq i — i en to W J CO en lo U 2 w 5 3 Pi I" 1 o H U B en en en ^o -* <a- LO rl- \€> Cn O 01 LD J (l, 3 to CO to en to en to en en 0> LO to i" m pl. "3" Ol en en en to o o ■* en co E- H 142 O to l-H tO E- — Ph c CJ Ph ft E- PJ co o <s u p< f—, o CO Ph i— I cm co u PL, PL, PJ O o o CO PJ hJ >-> m cj U o u J -J 3 pj ». O O PL, Pi U U o PL, o o H- , u 2 2 o O pq i — i i — i co o o o CO ^ co m ,-j <3 o LD o CD CO H H i-j II a o O LD P- PS co S3 CD u u < CO CO PJ 1— I o ■X CJ J „ E- Pi U s PL, £ pl o o o t~~ LO r^ to Ph PJ CD E- 3 Pi i— I >* ai o PJ H h CD u i K-1 Ph Ph N PL, 2 r-< to (— 1 LO II lE H cm 2 ■* cj CO CO O 2 CO CM CM 2 PP S PL, to 1 O < o LO CD PL, LT) 2 PJ c/z c PL, to hJ CO o CO PJ t^ o CO O CO CM H «jr E- H U H u r~~ to i — i CO CJ 2 co to \o CO w pig CO $ Ph O CO CM CM o 3 J Ph CD -J CO ^H Q en l 1 O CO lo CTi M P- II § s VD J CO PJ 2 PJ o u l < CO H O H 2 PL, s 1— i < E-< h O < PL, H CJ ^ co 2 CM CD § O PJ PJ pj CD O CD CD a CO u CD O PJ o Ph O CO to §s u Ph <£ u Ph PJ LO 1-1 ll: o o vO n u Pi E- 2 PJ CO O ffl ^s g 3 co p? o < PJ CM to 1 — 1 m s J CO 8 § * 143 Notation and Formulas for FIT 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27, 28, 29. 30. 31. 32. Number of measurements : NRMAX -- number of zero weights Number of predictor variables (vectors) : Measurements: v., i=l,2,...,n Predictor variables x , x ... x Measurement errors: e. , e„ ... e 12 n Error variance: Unknown parameters: g , g ... g Statistical model: errors independent, normal, variance a 2 Weights: "best" weights w. = 1/a 2 or 1/k i i i Coefficients: estimates of g Predicted values: Residuals: deviations from predicted values Residual standard deviation: s =/lw.z 2 /(n-k) ii Variance- covariance matrix: Standard deviation of predicted values: Standard deviation of coefficients : Standardized residuals: Orthonormalization: X'WX = TT' , T triangular, A = (T') _1 Fourier coefficients: Squared Fourier coefficients: Sum of squares: Reduction in total SS due to fitting Residual sum of squares: (n-k)s 2 = a 2 . Total (uncorrected) sum of squares: Ew.y 2 Cumulative mean square reduction: with r degrees of freedom Cumulative residual mean square: with (n-r) deg. of freedom F ratio for testing Ho:g =0 F ratio for testing Ho: 7 g. = u r i Gram factors: G =(x'Wx.) i5 G =[(x'Wx )-(x'W<f.J a - ... - v 1 ]r r r r r 1 Vector norms: Gram determinants: Multiple correlation coefficient squared: Accurate digits: obtained from refit to predicted values 144 nxl nxk [X , X , . . . jXiJ nxl a 2 = k.a 2 i i ^kxl y = Xg + e W = diag(w.=l/k.) i i g = (X'WX^X'Wy y = xg z = y - y s = /(y-y)'W(y-y)/(n-k) V = s 2 (X'WX)- 1 /diagonals of XVX' /diagonals of V z. = /(s 2 /w.-s2) i v i y $ = XA o = *lVy 5? i s. = a? i i \ + i = (y-y)'W(y-y) y'Wy Z^ Si /r &< n-r) S /Res. Mean Square [gs.(k-r+l)]/Res. MS (x;wx r ) J ' 2 nG 2 /(x'.Wx.) If=l-Res. SS/Iw.( yi -y w ) 2 -log 10 |g-6/^| The data in Snedecor and Cochran (1967) were selected because the book is easily available and they show many of the calculations required to obtain the results. The instructions on page 139 illustrate the use of FIT. Here, POLYFIT could be used more simply by replacing the DEFINE and FIT instructions above by POLYFIT y in col 1, weights 1.0, degree 1, x in column 2 The automatic printing would be essentially the same as that shown on pages 140 to 143. Automatic Printing . The automatic printing consists of "four" pages containing a comprehensive set of results for analyzing data. Four is put in quotation marks because the printing of results on one page may be continued on subsequent pages if the number of measurements or number of predictor variables is large. Each "page" is described separately below. A three line title appears at the top of pages one, three and four. The title in the example on pages 140, 142 and 143 is LEAST SQUARES FIT FOR DATA IN COLUMN 1 AS A LINEAR FUNCTION OF 2 PREDICTOR VARIABLES IN COLUMNS 2, 3 USING 5 NON-ZERO WEIGHTS = 1.0000000 The following are variations in the title which can occur: (1) on the first line 12 spaces are allowed for the word DATA. If a HEAD instruction (section 1.4) has been used, the 12 characters after the slash (/) in the HEAD instruction are used, (2) if there are more than 11 predictor variables, the column numbers are continued on the next line, and (3) on line 3, the number of zero weights is given if the second argument is a column number. In a POLYFIT instruction, the second line of the title has the form AS A POLYNOMIAL OF DEGREE 1 IN VARIABLE X IN COLUMN 11 The 12 characters used for VARIABLE X, are replaced by those following the slash in a HEAD instruction, if one has been used. Page One The following 8 items are printed for each of the (NRMAX) measurements: (1) the row in the worksheet, (2) the predictor variable, (3) the data (measurements), (4) the predicted values, (S) the standard deviations of the predicted values, (6) the residuals, (7) the standardized residuals, and (8) the weights used. Items (3), (4), (5) and (6) are printed with 8 significant digits. The standardized residuals are printed with 2 decimal places and 4 significant digits are used to print the weights. The standardized residuals are the residuals divided by their standard deviation. Some remarks on (2) and (3) follow. (2) (a) POLYFIT. The 12 characters in the first line of the column heading use either VARIABLE X or the 12 characters after the slash in the HEAD instruction, if one has been used. Eight significant digits are used to print the predictor variable. (b) FIT. Either one, two or a maximum of three columns is printed. If a constant is the first term in the model (which usually is the case), the column of l's is not printed (unless it is the only vector used). Otherwise, starting with the first vector not identically equal to one, as many predictor variables are printed as is possible with a maximum of three. Eight, six or four significant digits are used, depending upon whether 1, 2 or 3 columns are printed. If the values of either two or three predictor variables are printed, HEAD column is ignored and the word COLUMN is abbreviated to COL. . (3) The column heading DATA is replaced by the 12 characters after the slash in the HEAD instruction, if it has been used. 145 Page Two 1 his page contains four plots of the standardized residuals. The standardized residuals are used instead of the residuals to (i) have a common vertical scale for all plots going from -5.75 to +5.75 in steps of 0.5, and (ii) to avoid distortion, in some cases, due to differences in the standard deviations of the residuals. Item (i) avoids using a different scale for each set of measurements and makes it possible to present the results in a more compact form. Only residuals associated with non-zero weights are used in the plots. An examination of these plots can be very helpful in assessing the adequacy of the statistical model used. Non-random patterns and/or very large (small) values are evidence of one kind or another of failure of the model to represent the data. Good discussions of the examination of residuals may be found in Chapter 5 of Draper and Smith (1968) and Anscombe and Tukey (1965) . All TITLE instructions are ignored in the printing of this page due to lack of space. (1) Upper Left . The standardized residuals are plotted against the order in which the measurements are entered into the worksheet (row number) . If this order corresponds to the order in which the measurements were taken, patterns of non- randomness indicate that time has an effect on the measurements. (2) Upper Right . The standardized residuals are plotted against the predicted values. Non-randomness may indicate non-constant variance or that some important variable(s) has been excluded from the model. The former case may indicate the need to use weights, the weights used are improper or a transformation of the measurements is required. (5) Lower Left . The standardized residuals are plotted against the predictor (independent) ' variable. In a POLYFIT, lack of randomness of the residuals often indicates the need for extra terms in the polynomial. In a FIT, this plot may or may not have much meaning, depending upon the order and character of the predictor variables. The predictor variable used for the plot is the first one which is not identically equal to one (unless the number of vectors is one) . (4) Lower Right . This is a probability plot of the standardized residuals against the expected value oF" the standardized residuals, assuming that the measurement errors are normally and independently distributed. The ordered standardized residuals are plotted against x ± = Gau _1 (p) = 4.91(p a4 - (1-p)' 14 ) , where p = (i - TT/8)/(n + 1 - ti/4), for i > 2 or n > 10 = (5i - l)/(5n +1), for i = 1 and n < 10 and i=l,2,...,n = the total number of points; x is the inverse (percentage point) of the normal probability integral and the Tukey approximation on the right is used to compute x. We thank James J, Filliben for providing the formula for p, which is somewhat more accurate than the more traditional formulas. If the statistical model adequately represents the data, the points should lie approximately on a straight line. Although the measurement errors may be independent, the residuals are not. This fact is of little consequence if the number of measurements is large compared to the number of predictor variables. Page Three There are two sections, which give the variance- covariance matrix and an analy c ;s of variance. In both sections, on the extreme left, the heading COL is used in FIT and TERM in POLYFIT. 146 (a) Variance-covariance matrix of estimated coefficients. The matrix, V = s 2 (X'WX), is symmetric and only the lower triangular portion is printed. If the number of columns exceeds 7, the matrix is printed in blocks. All rows of the first 7 columns are printed in the first block and subsequent blocks are printed as required to complete the triangular matrix. The diagonal entries are the variances of the parameter estimates (coefficients) and the off -diagonal values are the covariances between pairs of estimates. The standard deviation of any linear combination of the estimates, a'b, is the square root of a'Va. (b) Analysis of variance. This is not the most common analysis of variance, but rather several analyses combined into one. The results depend upon the order in which the vectors are entered (appear in the instruction); unless the vectors are orthogonal. The instructions FIT 1, 1.0, 3, 11, 12, 13 and FIT 1, 1.0, 3, 13, 12, 11 would yield the same results in other portions of the printing, but here the results would, in general, differ. The ten columns in the printing are described under (1) through (10) below. (1) Shows the terms 0, 1, 2, ... ,dina POLYFIT or the column numbers of the vectors used in FIT. These numbers are followed by RESIDUAL and TOTAL. (2) The second column shows a separation of the total sum of squares, £,w.y? f into (k+1) parts 1 x x S + S + ... + S, + S,, = S 12 k k+1 n with one degree of freedom for each of the k vectors fitted and (n-k) degrees of freedom for the residual. The second sum of squares is the sum of squares due to fitting the second vector after having fit the first. The third (if k exceeds 2) sum of squares is the reduction due to fitting the third vector after having fitted both the first and second vectors, and so on. The entries in this column are the squared Fourier coefficients and are identical to the numbers in the first (k+2) rows in the column of Fourier coefficients discussed under Automatic Storage. (3) For the rth line of the printing, the cumulative mean square reduction equals where S. is the ith sum of squares shown in the second column. In the example on page 142 50654.697 = (99404. 994+1904. 3999)/2. (4) The cumulative degrees of freedom 1, 2, ... , k are printed and followed by the degrees of freedom for the residual, (n-k), and for the total, n. The number in the rth line, r, is the number in the denominator of the expression used to compute the cumulative mean square reduction above. (5) The cumulative residual mean square on the rth line is k+1 Ii=x + 1 V^ The last number in the column is the residual mean square, which equals the residual sum of squares divided by the residual degrees of freedom. On page 142, 10.533333 = 31.599998/3 and 483.99998 = (1904. 3999+31. 599998)/4. The square root of the residual mean square (10.533333) equals the residual standard deviation (3.2455096) shown on the following page. 147 (6) Gives the degrees of freedom for the cumulative residual mean square, which equals (n-r) on the rth line. (7) The F-ratio printed is the sum of squares (due to coefficient] divided by the residual mean square with 1 and (n-k) degrees of freedom. On page 142, 9437.183 = 99404.994/10.533333. The F-values are printed with 3 decimal places. (8) Gives the significance level of the F-ratio on the same line in (7), under the hypothesis that the corresponding parameter in the model equals zero. These significance levels should be interpreted carefully. Three decimal places are shown. The value .001 on page 142 is the probability that a F-ratio will exceed 180.797 if there is no linear term in the model. (9) The F-ratio on the rth line is r k+l S k+1 )/(k-r+l) as. tj i=r l Residual Mean Square" [ k _ S./Ck-r+l) Residual Mean Square with (k-r+1) and (n-k) degrees of freedom. It is used to test the hypothesis that all of the parameters r, r+1, ... , k equal zero. On page 142 4808.990 = (99404. 994+1904. 3999)/2 divided by 10.533333 with 2 and 3 degrees of freedom. (10) Gives the significance level for the F-ratio on the same line of (9). Page Four This page is divided into three parts: (a) estimates, (b) accuracy, and (c) estimates from refit omitting last term. (a) Least squares estimates of the unknown parameters are printed on the left. On the extreme left, the column heading TERM appears with POLYFIT and the heading COL with FIT. This is followed by a listing of the estimates (coefficients) , standard deviations of the estimates and the ratios of the estimates to their standard deviations. The residual standard deviation and the associated degrees of freedom are printed at the bottom. The degrees of freedom equals the number of non-zero weights minus the number of vectors fitted, k, which is the third argument in a FIT instruction or the third argument plus one in a POLYFIT instruction. If the model is correct (satisfactory) the residual standard deviation is an estimate of a. The ratio can be used to perform t-tests and construct confidence intervals for the parameters in the model. However, see references in section 4.8 for a discussion of correct procedures. (b) Next, a column headed *ACC. DIGITS is printed. The algorithm used in FIT (POLYFIT) is generally accurate, but no least squares fitting algorithm is fully accurate in all cases. (See Longley (1967), Wampler (1969) or Wampler (1970).) Computational accuracy is affected by several factors; in particular (i) the number of measurements and vectors, (ii) the scaling of the measurements and vectors, (iii) how closely the vectors are related (correlated), and (iv) the number of digits in the raw data. The values under *ACC. DIGITS provide an indication of how well the results have been computed. Loosely speaking, values 148 between 6. and 8. indicate computations are accurate. Values less than 4.0 indicate some source of computing difficulty. Negative values cry out for an investigation. Mathematically, singular matrices cannot be inverted. However, in a computer, an algorithm sometimes fails to distinguish between a singular matrix and a non-singular matrix. This can happen here. Users will sometimes use a set of vectors which is not of full rank. For example, one of the columns may inadvertently contain all zeros. Any of the following may indicate trouble: (i) a coefficient exactly equal to zero, (ii) extremely large or small coefficients or standard deviations of coefficients, and (iii) small values under *ACC. DIGITS. The values under *ACC. DIGITS are estimates based upon a refit of the predicted values. If the calculations are accurate, the two calculations of the coefficients should agree. (Mathematically, they are exactly equal.) The estimates of accuracy are reasonably reliable. The smallest and largest possible values are -8.0 and +8.0. If 3 is the coefficient and g is a coefficient computed from the refit, the accuracy of the computations . is given by -logiolce - e)/e|. See, also, ACCURACY in section 2.6. Negative answers indicate the first digit in the coefficient is incorrect. In the example on page 143, the first coefficient has an error of 2 in the eighth digit. The second coefficient is correct to eight digits. The results here apply to the coefficients and provide a general assessment of computational accuracy. They cannot be generalized to all other computations. For example, if a measurement equals 15923.648 and the predicted value equals 15923.635, the residual, 0.012681742, may have only 3 or 4 correct digits. (c) On the right, the coefficients, their standard deviations and the ratio of the coefficients to the standard deviations are printed from a refit omitting the last term (vector). Again, the residual standard deviation and degrees of freedom are printed at the bottom. These results can be usefully compared with the results on the left; particularly in a POLYFIT. In a FIT, these results may or may not be useful, depending upon the order in which the vectors appear in the instruction and the importance of the last term. If only one vector is fitted (or POLYFIT of degree 0) , only the residual standard deviation and degrees of freedom are printed. Automatic Storage . There are six different forms of each instruction. They differ with respect to the amount of information stored in the worksheet, which depends on the number of arguments in the instruction as follows: Form Arguments* No. of Rows* * Storage 14 None 2 5 2k+6 C = Coefficients 3 6 n=NRMAX C, R = Residuals 4 7 n=NRMAX C, R, S = Standard deviations of predicted values 5 8 2k+2 C, R, S, F = Fourier coefficients 6 10 (k+3)x(k) C, R, S, F, V = Variance-covariance matrix * Add (k-1) for FIT instruction. ** In last named column (or matrix) . Note, (2k+6) and (2k+2) may exceed NRMAX. If so, NRMAX will have to be reset in order to print the entire contents of the column(s). If (2k+6) or (2k+2) exceeds the number of rows 149 in the worksheet, the spill will be lost. Only as many values as will fit in the column are stored and no diagnostic is printed. The user must specify unique arguments for storing the required information. In POLYFIT 1, 1.0, 3, 2 put in 11, 12, 12 and 13 the Coefficients would be put in column 11 and the Fourier Coefficients in column 13. The Coefficient column contains: Rows Description 1 to k coefficients k+1 to 2k standard deviations of coefficients 2k+l to 2k+6 six values: n = number of non-zero weights k = number of vectors (degree+1 in POLYFIT) residual degrees of freedom residual standard deviation residual variance multiple correlation coefficient squared. The residual variance is the last number under CUM. RESIDUAL MS on Page Three of the automatic printing. All the remaining values, except the squared multiple correlation coefficient, appear on Page Four of the automatic printing. The squared multiple correlation coefficient is R 2 = 1 - Residual Sum of Squares/ J .,w. (y.-y ) 2 , where y = £w.y./£w.. The denominator in the fraction is the corrected Total Sum of Squares. If the first vector is a vector of l's, the corrected Total Sum of Squares is the uncorrected Total Sum of Squares minus the sum of squares due to fitting the mean (constant term), i.e., the last number minus the first number under SS = RED. DUE TO COEFF. on Page Three of the automatic printing. If the first vector is not identically equal to 1, the R 2 has no meaning. The Fourier coefficient column contains the k squared Fourier Coefficients, the Residual Sum of Squares, the Total Sum of Squares, and the k Fourier coefficients. The first (k+2) values are the same as those under SS = RED. DUE TO COEFF on Page Three of the automatic printing. The Fourier coefficients (see Computing Method below) are the estimates of the parameters after orthonormalization. In the sixth form, the last two arguments give the row and column location of the number in the upper left-hand corner of a (k+3)x(k) matrix. The top (kxk) portion of the matrix is the (complete) variance-covariance matrix shown on Page Two of the automatic printing. The last three rows contain the Gram factors, the vector norms and the Gram determinants, which do not appear in the automatic printing. The Gram factors are G n = (x'WxJ 15 = (f. ^.x z ) h 1 v 1 1 ^1=1 i i G 2 = (x^x 2 - (x^W$ 1 ) 2 ) 5 ' 2 G k = ^k " &W " (X k W$ 2 )2 " '•• " ^k-/^ 2 150 where x. is the ith vector of X and <J>. is the ith vector of $ = X(T')" 1 and X'WX = TT' . The vector norms are the square roots of the diagonal terms of the matrix of normal equations, (xMfe.)\ i = l,2,...,k The Gram determinants are the partial products n r .GVfx'.Wx.), i=1 i v i i J ' where r = 1, 2, ... ,k. If the x vectors are orthogonal, the kth Gram determinant equals 1. If the X'WX matrix is singular, the kth Gram determinant equals zero. The square root of a quotient in the Gram determinants is the Gram factor divided by the vector norm. If (R+k+3) exceeds the number of rows in the worksheet, or if (C+k) exceeds the number of columns in the worksheet, the following informative diagnostic is given * PARTIAL STORAGE OF MATRIX Computing Method . The algorithm used for the solution of linear systems of equations involves a Gram- Schmidt orthonormaliztion of the predictor variables as described by Davis (1962) and Walsh (1962). The matrix X'WX of products and cross products is factored into the product TT', where T is a lower triangular matrix. A set of orthonormal vectors is then formed by computing $ = XA, where A is the inverse of T' . The matrix product $Wy produces the Fourier coefficients (see Automatic Storage) used in a number of the calculations. Evidence indicates the algorithm is comparatively accurate; see Longley (1967), Wampler (1969) and Wampler (1970). Two slight modifications have been made to improve the accuracy. The sums of products and cross products are performed using double precision arithmetic. A constant, the mid-range of the measurements (with non-zero weights) is subtracted from all the measurements before computations begin and is added back when the computations are complete. Remark 1 . Often it is desirable to perform several regressions using the same measurements, but different numbers of vectors. If the FIT instruction is stored, there is a question as to how to INCREMENT the instruction. It can only be done if triple asterisks are used. (See section B1.8.) The following three instructions would perform a FIT using 5, 4, 3, 2 and finally 1 vector. 1/ FIT 1, 1.0, 5 in cols 11 *** IS 2/ INCREMENT instr 1 by 0, 0.0, -1, and *** -1 PERFORM instr s 1 thru 2, 5 times Remark 2 . The procedures described in this section pertain to 1 inear least squares estimation. Algorithms for non-linear least squares estimation are more difficult and varied. One procedure which is relatively easy and sometimes works very satisfactorily is the Gauss- Newton (or Taylor series linearization) method described in section 10.3 of Draper and Smith (1968). The FIT (or rather SFIT) instruction can be used effectively in each iteration of this method. Remark 3 . Considerable effort has been expended to develop the FIT (POLYFIT) instruction to print useful results in a readable form. This is not done without some cost to the user, both in 151 computing time and printing charges. We believe incorrect and/or misleading conclusions based upon an incomplete analysis of data are far more costly than the few additional cents it takes to print more detailed and easily interpreted results. Users who are particularly concerned about costs, for one reason or another, always have the option of using one of the forms of SFIT (SPOLYFIT) . Remark 4. Joan R. Rosenblatt has used a FIT instruction effectively for cubic spline fitting with fixed knots. See Ue Boor and Rice (1968) for further details on cubic spline approximations. Three constraints are imposed: at each knot (1) the fitted cubics should agree, (2) the first derivatives should agree, and (3) the second derivatives should agree. Let 9. be the knots, i = 1,2, ... ,r, and let (x-9.) 3 = (x-9.) 3 , if x > 9., and =0, if x < 9.. = i Then, the model used for a least squares fit is E(y) = a Q + a x x + a 2 x 2 + a 3 x 3 + b^x-9^ 3 + b 2 ( x ~ 9 2 } + + ... + b^x-9^. If the third constraint is relaxed, the following terms should be added to the model Cjfr-0^ + c 2 (x-9 2 ) 2 + ... + c r (x-9 r )|. FIT y in col (C) , weights (E) , (k) variables in columns (C) , (C) ... (C) Provides "four" page automatic printing, but no automatic storage. The instruction has (k+3) arguments. / : J I FIT y in (C) , weights (E) , (k) variables in cols (C) ... (C) , put coeffs in (C) / / __/ Same as preceding form, but, in addition, the coefficients and standard deviations of the coefficients are stored in the column designated by the last argument. 2 (k+3) values are- stored. This form of the instruction has (k+4) arguments. If the FIT instruction in the example on page 139 is replaced by the instruction FIT 1, 1.0, 2, 2, 3, 31 then column 31 would contain the 10 numbers 65.100002, 1.3800000, 5.8283787, .10263203, 5.0000000, 2.0000000, 3.0000000, 3.2455097, 10.533333 and .98367770. / ■ — — ' ~ ^ — — J I FIT (C) wts (E) to (k) in (C) . . . (C) , put coeffs in (C) , residuals in (C) / / / Same as preceding form, but, in addition, the residuals are stored in the column designated by the last argument. NRMAX values are stored. This form of the instruction has (k+5) arguments. / / FIT (C), (E), (k), (C)...(C), put coeffs in (C) , res. in (C) , sd of pv in (C) / 152 Same as preceding form, but, in addition, the standard deviations of the predicted values are stored in the column designated by the last argument. NRMAX values are stored. This form of the instruction has (k+6) arguments. / 7 I FIT (C) , (E) , (k) , (C) . . . (C) , put in (C) , (C) and (C) , Fourier coef f s in (C) / / / Same as preceding form, but, in addition, the Fourier coefficients are stored in the column designated by the last argument. 2(k+l) values are stored. This form of the instruction has (k+7) arguments. If the FIT instruction in the example on page 139 is replaced by the instruction FIT 1, 1.0, 2, 2, 3, 31, 32, 33, 34 then column 34 would contain the six values 9.9404994+04, 1.9043999+03, 31.599998, 1.0134100+05, 3.1528558+02 and 43.639431. / ■ ~ ~~ ~~ ' ■ ' ■ ~ ~7 I FIT (Q, (E), (k), (C)...(C) put in (C) , (C) , (C) , (Q vc matrix in (R) , (C) / / / Same as preceding form, but, in addition, the variance-covariance matrix, the Gram factors, vector norms and the Gram determinants are stored in a (k+3)x(k) matrix starting in row (R) of column (C) , designated by the last two arguments. This form of the instruction has (k+9) arguments. If the FIT instruction in the example on page 139 is replaced by the instruction FIT 1, 1.0, 2, 2, 3, 31, 32, 33, 34 and 1,41 then the variance-covariance matrix 33.969998 -.57933331 -.57933331 .010533333 would be put in rows 1 and 2 of column 41 and 42, the Gram factors 2.2360680 and 31.622776 would be row 3 of columns 41 and 42, the vector norms 2.2360680 and 1.2698425+2 would be in row 4 of columns 41 and 42, and the Gram determinants 1.0000000 and .062015503 would be in row 5 of columns 41 and 42. POLYFIT y in col (C) , using weights (E) , of degree (d) , predictor x in col (C) Provides "four" page automatic printing of results, but does not provide any storage. This instruction has 4 arguments. The degree of the polynomial, d, may equal zero. / 7 I POLYFIT y in col (C) , wts (E) , degree (d) , x in (C) , put coefficients in (C) / / / Same as preceding form, but, in addition, the coefficients and standard deviations of the coefficients are stored. A total of 2(d+4) values are stored. This form of the instruction has 5 arguments. / ' 7 I POLYFIT y in (C) , wts (E) , deg (d) , x in (C) , put in (C) , residuals in (C) / / _____/ 153 Same as preceding form, but, in addition, the residuals are stored in the column designated by the last argument. NRMAX values are stored. This form of the instruction has 6 arguments. / ~~ ~ ' ~~7 I POLYFIT (C) , (E) , (d) , (C) , put coef fs in (C) , res in (C) sd of pv in (C) / / / Same as preceding form, but, in addition, the standard deviations of the predicted values are stored in the column designated by the last argument. NRMAX values are stored. This form of the instruction has 7 arguments. / 7 I POLYFIT (C) , (E) , (d) , (C) , put in (C) , (C) , (C) and Fourier coeffs in (C) / / / Same as preceding form, but, in addition, the Fourier coefficients are stored in the column designated by the last argument. 2(d+2) values are stored (if there is sufficient room in the column). This form of the instruction has 8 arguments. / 7 I POLYFIT (Q , (E) , (d) , (C) , put in (C) , (C) , (C) , (C) and vc matrix in (R) , (C) / / / Same as preceding form, but, in addition, the variance -covariance matrix, the Gram factors, the vector norms and the Gram determinants are stored as a (d+4)x(d+l) matrix starting in row (R) of column (C) , designated by the last two arguments. This form of the instruction has 10 arguments. SFIT y in (C) , weights (E) , (k) variables in cols (C) ... (C) , put coeffs in (C) / 7 I SFIT (C) wts (E) to 00 in (C)...(C), put coeffs in (C) , residuals in (C) / / I I 7 I SFIT (C), (E), 00, (C)...(C), put coeff in (C) , res. in (C) , sd of pv in (C) / / I I 7 I SFIT (C) , (E) , (k) , (C) . . . (C) , put in (C) , (C) and (C) , Fourier coeffs in (C) / / I I 7 I SFIT (C) , (E) , (k) , (C) . . . (C) put in (C) , (C) , (C) , (C) vc matrix in (R) , (C) / / / SPOLYFIT y in col (C) , wts (E) , degree (d) , x in (C) , put coefficients in (C) 154 / / SPOLYFIT y in / (Q, wts CE), deg (d) , x in (C) , put in (C) , residuals in (C) / / / / / SPOLYFIT (C), / (E), (d), (Q, put coeffs in (C) , res in (C) sd of pv in (C) / / / / / SPOLYFIT (C), / (E), (d), (C), put in (C) , (C) , (C) and Fourier coeffs in (C) / / / / / SPOLYFIT (C), / (E), (d), (C) put in (C) , (C) , (C) , (C) and vc matrix in (R) , (C) / / / 4.6 Correlation . CORRELATION, SCORRELATION Correlation describes the linear , statistical , relationship between two normally distributed variables. Correlation techniques can be used effectively in prediction and model building problems. Unfortunately, correlation coefficients are often used and interpreted incorrectly, because they are (i) used when a relationship is not linear, (ii) used to imply a causal rather than statistical relationship, (iii) used when the variables are not normally distributed, (iv) misconstrued as real when they are spurious, and (v) used blindly when outliers are present or when groups of data are not validly combined. See the references in section 4.8 for more details. To aid the user in the thoughtful use and interpretation of correlation coefficients, a CORRELATION instruction automatically prints three different types of correlation coefficients and four other tables for auxiliary use. An additional technique, which is not part of the instruction, is to plot pairs of variables (scatter diagrams) and also residuals. Liberal use of plots can be very helpful in extracting the relevant information in the data and in avoiding misinterpretations. There are three different forms of CORRELATION which differ only with respect to the amount of information stored. In each case, the number of variables used (first argument) must be greater than 1 and less than 100. The arguments in each form are all integers and the number of arguments is equal to the first argument plus one, three or five, respectively, in the three forms. Each form of the instruction provides an automatic printing of seven different tables. Pages 156 and 157 give the automatic printing and the set of instructions for some data taken from page 216 of Draper and Smith (1968). (Note, in their correlation matrix -0.615790 should read -0.615970; 0.615790 should read -0.615970; and 0.769950 should read 0.767950). The title at the top of the first page gives the number of variables used and the number of measurements (NRMAX) . The seven tables are described below. Any reader who is in doubt about the meaning of a particular number would be well advised, on first use of the instruction, to calculate quantities directly by other means. Some methods for doing this are sketched in the descriptions which follow. Throughout, n= NRMAX will denote the number of measurements and p (first argument) the number of variables. If the number of variables, p, is less than or equal to 10, all tables are printed in their entirety. If p exceeds 10, tables are printed in blocks with 10 or less columns in each block. Unfortunately, it is difficult to give a single reference for all seven tables in the automatic printing. Non-statisticians are urged to consult a statistician for assistance in the interpretation of the results. A reference is given for each table, but a full 155 a. s fc fc w w w o J u § 2 1 — 1 O 5, h o t-. O CO O CM o >o or- H ooi <C o o w O CO o r- o t o >o o t-- O LT1 O rH O f- O M3 O iH o r-. O LO o O (-4 CO ONO A O i— 1 t~- 2 iH 1 U O (Nl t>- O LO rH O ^O O O oo CO O f- O o o\ CM fc O >0 r- 2 rH o o r-- oi O t— f ^t ocoo o o o O LO LO O CM o ONOW OKIOH O 00 i-H O O \D \0 00 o csj r-- oi OrfNO O O O O o r-- \o ■«* O i— I O LO O rO lo o O "* ^ T-i O «tf" O t-\ O r-0 O CM O fO IOCO OOlNfl OOvOW OHvOOO O *0 LO \Q i— t rsj to ^j- r— I <N1 tO "3- 156 II B, O CO o z. ^ Uh to H 2 2 w c£ i-H tq U a* B, Ol cl, o> w o - u .-J z.z o o l-H O H < 35 CM r~- 01 o 2 5 CM r-~ cn o o -J L/} to -T o c_> tu 00 Ol 00 o w J to to S "li- Ol o Di en Ol o 00 Sfe "* — o VO cr> OO o tn w to u w ■* o \o r-~ f-H LO Z Ol «a- o r~^ Ol o o vO Ol ■* — in LO w Z o o o o • o CTl O o t/) — o s z ij — r ) L" u ft, «H CO w s > JO^NNHr- 1 LO tO \0 ^J- ^f o UHnonoocctoaoi tO H N tN tO (M H M H O tZ z * <Cr-IOOOCnOOOrs)l— I O tO LO LO p O Cn LO LO O O O \D u O MD ONHLO >-H O O rs] cn OO LO LO «3" O tH r~- r-i ■ i-H O O cn LO O CO cn ^- 157 understanding is best achieved by consulting several references. Kendall and Stuart (1961) is perhaps the best single reference. by (1) Simple Correlation Coefficient . The simple (product moment) correlation coefficient for two variables x and y is given r xy I 1=1 (\ - *) (y i - y) Ci c*i - *) 2 Ci <y± - ^ . where x is the average of the x measurements and y the average of the y measurements. See, for example, section 1.6 (page 33) of Draper and Smith (1968) or Chapter 7 of Snedecor and Cochran (1967). Clearly, the correlation between any variable and itself is 1.0. Hence, the upper left to lower right diagonal entries in the table are always equal to 1.0. Also, it is clear that r = r , so only the lower half of the table is printed. The average of column 12 is 10.622222 and the average of column 13 is 22.422222. The sums of squared deviations about the averages are shown in the calculation of the correlation coefficient below: -8.1644448 xy \J (4.4555554) (502.81554) -8.1644448 47.332045 -.17249296 A single correlation coefficient can be obtained by using a FIT instruction and the formula xy \J S 2 + (n-2)s- 2 For the above example r = -.016237455 xy /(-.01623745S) 2 + 7(.035046006) 2 = -0.17249296 (2) Significance levels of simple correlation coefficients . For each pair of variables (x and y) , the F-statistic F M, n-2) = (n-2)r 2 / (1 - r 2 ) xy xy with 1 and (n-2) degrees of freedom is computed. Here we are making use of the fact that F = t squared. From which the significance level 158 S = Pr(F exceeds F ) is computed. If the "true" correlation coefficient is equal to zero, then S is the probability that in a random sample (of the same size) the absolute value of a sample correlation coefficient will exceed the absolute value of the observed correlation coefficient. For columns 12 and 13 F = 7(0. 029753822)/(l-0. 029753822) = 0.21466382 and S = 0.6572. The value of S can be easily verified by using the appropriate F PROBABILITY instruction (see section 4.7). Small values (less than .05 for example) of S indicate that the correlation coefficient is significantly different from zero. In this case, S is very large and there is a lack of evidence that columns 12 and 13 are correlated. However, see the next two descriptions for contrary evidence. (3) Partial Correlation Coefficients . When more than two variables are under study, the simple correlation coefficient can be seriously distorted by the effect of other variables. The partial correlation coefficent may overcome this difficulty by measuring the correlation between two variables after eliminating the effect of the remaining variables under study (remaining variables held constant) . The user should compare the simple correlation coefficients with the partial correlation coefficients. Any "large" discrepancy indicates that one or more of the remaining variables is having an important effect on the relationship. See Kendall and Stuart (1961), section 27.5, page 318. Let R = (r..) be the matrix of simple correlations coefficients and let C = R" 1 = (r 1 - 1 ) be the inverse of R. Then, the partial correlation between any pair of variables, i and j, with the remaining variables fixed (held constant) is -r ij r . . = . !J • /- -■,- A A By using MINVERT (section 8.5), it can be verified that the partial correlation between columns 12 and 13 is - 0.69717001. 1J - / (4.8973892) (3.4156598) Note carefully that the partial correlation coefficient is 0.6972, whereas the simple correlation coefficient is -0.1725. The two coefficients not only differ in magnitude, but also in sign. Thus, the effect of column 11 and/or column 14 is distorting the value of the simple correlation coefficient. This can be seen further by examining the remaining coefficients. (4) Significance Levels of Partial Correlation Coefficients . For each pair of variables, the following F-statistic is computed from the partial correlation coefficient r : xy. F (l,n-p) = (n-p)r 2 / (1 - r 2 ) xy. xy. with 1 and (n-p) degrees of freedom. From which the significance level, S, is computed from S = Pr( F exceeds Fo ) 159 Under the hypothesis that the "true" partial correlation coefficient is zero, S is the probability that the absolute value of a partial correlation coefficient will exceed the absolute value of the observed partial correlation coefficient in a random sample (of the same size). See section 27.22 on page 333 of Kendall and Stuart (1961). For columns 12 and 13, F = (5) (0.48604604)/(l-0. 48604604) = 4.7284977 and S = 0.0817 Compare this value of S with the value 0.6572 in (2) above. (5) Spearman Rank Correlation Coefficient . A rank correlation coefficient is useful when variables can not be measured quantitatively, but only their ranks can be observed. The rank correlation coefficient can also be used to avoid the assumption of a bivariate normal distribution. A comparison should be made between the rank correlation coefficients and the corresponding simple and partial correlation coefficients. Again, a "large" discrepancy between two comparable coefficients is an indicator of some abnormality in the data. See Kendall (1948) for further details. The Spearman rank correlation coefficient for any pair of variables x and y is computed from: P xv = A - D 2 - T xy x - T y xy /(A - 2T )(A - x 2T ) y where and D xy = I- =1 [rank(x.) - rank(y.)P, A = (n-l)(n)(n+l)/6, T x = 0/12)1^ - D(t x )(t x + 1), T y = Cl/12)I y (t y - l)(t y )(t y + 1), t = number of ties in a set of tied x's, X ' t = number of ties in a set of tied y's. y ' The quantities T and T are used to make adjustments for ties in the ranks; see section 4.1. If there are no ties T and T equal zero and x y ' p = 1 - D 2 /A. xy For columns 12 and 13, it can be easily verified using a RANKS instruction (see section 4.1) tliat the rank correlation coefficient equals 120 - 134.5 - 0.5 - 0.0 P xv = — y i/ (120-1) (120-0) = -15/119/119.49895 = -0.12552421, which does not differ greatly from the product moment correlation coefficient -0.1725. 160 (6) Significance Level of Quadratic Fit over Linear Fit . Underlying the use of a correlation coefficient is the assumption that the two variables are linearly related. The results in this table are useful in assessing the validity of this assumption of linearity. The variables are all assumed to be normally distributed. The numbers printed are the significance levels for a F-test of the hypothesis that the quadratic term in a quadratic model is zero. The F-statistic used is F (1,11-3) = [Residual sum of squares (linear model) - Residual SS (quadratic model)]/ c Residual variance (quadratic model) with 1 arid (n-3) degrees of freedom. The values of 1 and (n-3), 1 and 6 in our example, are printed in the title. The significance level, S, is then computed from S = Pr(F exceeds F ) v o J Small values of the significance level (less than .05, for example) indicate lack of linearity. The test results differ depending upon which variable of a pair is considered the dependent variable and which one is considered the independent (or predictor) variable. Hence, the entire table is printed, rather than just the lower half. The diagonal entries are always equal to one and have no particular relevance. Tests of hypotheses in linear regression are discussed in section 13.8 on page 441 of Brownlee (1965). For a regression of column 12 on column 13, F = (4. 3229856-4. 2779137)/0. 71298562 = 0.063215720 and S = 0.8099. The residual sums of squares can be obtained from using POLYFIT and the value of S can be verified using F PROBABILITY (see section 4.7). Actually, the values of F and S are the same as the last numbers in the columns headed F(COEF=0) and P(F) in the analysis of variance of the automatic printing of a POLYFIT of degree 2 of column 12 on column 13. (7) Confidence Intervals For Simple Correlation Coefficients . Both 951 and 991 confidence intervals for the simple correlation coefficients are printed in a two-way table, using four decimal places, with two entries in each cell of the table. The .95 and .99 confidence coefficients are printed along the upper left to lower right diagonal. The 95% confidence limits are printed below the diagonal and the 991 confidence limits are printed above the diagonal. The number in the lower left of each cell is the lower confidence limit and the number in the upper right is the upper confidence limit. The confidence intervals are based on a normal approximation and are computed as f olloivs : Lower confidence limit: tanh[z-u//(n-3)] Upper confidence limit: tanh[z+u//(n-3)] , where and z = tanh -1 (r) = Jslcg[(l+r)/(l-r)], (log to the base e) u = 1.9599640, for 951 confidence interval = 2.5758295, for 99% confidence interval. See Chapter 3, page 101, of Morrision (1967). For example, for the 95% upper confidence 161 limit for the correlation between columns 12 and 13, z = tanrr 1 (-0.17249296) = -0.17423494 and the upper confidence limit equals tanh(-0. 17423494+1. 959640//6) = tanh(0. 6259176) = 0.5552. Also, the lower 99% confidence limit equals tanh(-0. 17423494-2. 5758293/76) = tanh(- 1.2258128) =-0.8414. We are 951 confident that the "true" correlation coefficient lies between -0.7506 and +0.5552 and we are 99% confident that the "true" correlation coefficient lies between -0.8414 and +0.7051. (The confidence intervals are wide because the sample size (9) is small.) CORRELATION between (p) variables in columns (C) , (C) ... (C) Provides the automatic printing described above with no storage of results. / _____________ ______ / CORRELATION (p) var's in (C) , (C) ... (C) , put array of simple coeffs in (R) , (C) / / , / Same as above, but, in addition, provides for the storage of the simple correlation coefficients as an array starting in row (R) of column (C) . The instruction CORRELATION with 4 variables in cols 11 *** 14, put coeffs in 1,41 would put the simple correlation coefficients in the worksheet as follows: Row/Column 41 42 43 44 1 1.0000000 .68374211 -.61596990 .80175223 2 .68374211 1.0000000 -.17249296 .76795027 3 -.61596990 -.17249296 1.0000000 -.62874596 J_ .80175223 .76795027 -.62874596 1.0000000 This form of the instruction is useful when one wants to perform additional calculations with the correlation coefficients or when more significant digits are required in the answers . r ^ 7 I CORRELATION for (p) in (C) ... (C) , put r coeffs in (R) , (C) , rho in (R) , (C) / / . . / Same as above, but, in addition, the partial correlation coefficients are stored as an array starting in row (R) of column (C) , The instruction CORRELATION with 4 variables in columns 11 *** 14 store results in 1,41 and 6,41 would put the following partial correlation coefficients in the worksheet: Row/Column 41 42 43 44 6 1.0000000 .43170931 -.45663585 .10539049 .43170931 1.0000000 .69717003 .72682013 _8 -.45663585 .69717003 1.0000000 -.64778929 9 .10539049 .72682013 -.64778929 1.0000000 This form of the instruction is useful when one wants to perform further calculations using the partial correlation coefficients or when more significant digits are needed. 162 SCORRELATION (p) var's in (C) , (C) . . . (C) , put array of simple coeffs in (R) , (C) / 7 I SCORRELATION for (p) in (C) ... (C) , put r coeffs in (R) , (C) , rho in (R) , (C) / / / 4.7 Probability . F PROBABILITY, UNIFORM RANDOM Both of the instructions in this section use two word commands. F PROBABILITY with (E) and (E) degrees of freedom for (E) put in column (C) Computes the right-tail area of an F-distribution with the specified number of degrees of freedom. Let the third argument be represented by F . The probability that a random variable, which follows the F-distribution with the specified degrees of freedom, exceeds F is put in the column designated by the fourth argument. In the notation of AMS 55 (Abramowitz and Stegun (1964)), the instruction computes Q(Fo). The instruction F PROBABILITY with 3.0 and 5.0 degrees of freedom of 5.4095 put in column 46 would put the number 0.050 into column 46. Numbers specified by the first two arguments should be integers. (If either argument is not a column number, it should be written with a decimal point.) If numbers are not integers, the following informative diagnostic is printed: * NU1 OR NU2 TRUNCATED TO INTEGER If any value specified by the 1st two arguments is less than 1.0, the value 1.0 is used and the following informative diagnostic is printed: * NU1 OR NU2 LESS THAN 1 Any number specified by the third argument must be greater than or equal to zero. Otherwise, the following informative diagnostic is printed: * F LESS THAN 0, SET=0 The probability integral is obtained by computing a finite series in double precision using the formulas on page 946 of Abramowitz and Stegun (1964). UNIFORM RANDOM numbers starting with (K) put in column (C) The instruction produces numbers pseudo randomly distributed between and 1 in every row down to NRMAX. If the number (K) is equal to or greater than 1, the integral part of (K) is used as the starting value by the random number generator. If the value (K) is less than 1.0, it is assumed to be a random number and the corresponding starting integer is computed by the instruction. The value of (K) can be 1 to start with; or a random integer between 1.0 and 8192.0 can be chosen. All numbers greater than 8192. are reduced modulo 8192. 163 To use the instruction sequentially one can use the last random number generated as the starting value for the next sequence. For example, if NRMAX=50 and random numbers have been put into column 21, then the instruction UNIFORM RANDOM numbers starting with *S0,21* put in column 22 could be used to generate a new sequence of random numbers in column 22. The argument *50,21* designates the random number in row 50 of column 21. The algorithm used is an adaption of the one given by Kruskal (1969) . This particular generator was chosen because it is extremely portable. However, the portability is achieved at the expense of being optimum. The random number generator is not the most efficient nor of the highest quality. It should be used experimentally only and with caution. For this purpose it should be adequate. Because the generator is not optimum, the following informative diagnostic is always printed when the instruction is used: * CAUTION, USE EXPERIMENTALLY ONLY. NOT OPTIMUM IN ORDER TO MAKE IT MACHINE IMPENDENT. REFERENCE - J.B. KRUSKAL, ACM, 12, 92. AND J. H. HALTON, SIAM REV., 12, 1. 4.8 References For Section 4 . Listed below are references to books and articles which discuss the statistical and computing techniques and concepts used by the OMNI TAB instructions for statistical analysis. No attempt is made to be complete. ABRAMOWITZ, MILTON and STEGUN, IRENE (1964). Handbook of Mathematical Functions , NBS Applied Mathematics Series 55, Superintendent of Documents, U.S. Government Printing Office, Washington, D.C. 20402. ANSCOMBE, F. J. and TUKEY, J. W. (1963). The examination and analysis of residuals. Technometrics, 5, 141-160. BRADLEY, J. V. (1968). Distribution-free Statistical Tests . Prentice-Hall. BROWNLEE, K. A. (1965) . Statistical Theory and Methodology in Science and Technology , 2nd Edition, John Wiley and Sons, Inc. CROW, E. L. and SIDDIQUI, M. M. (1967). Robust estimation of location. J. Amer. Statist. Assoc, 62, 353-389. DAVIS, P. J. (1962). Orthonormalization codes in numerical analysis. Survey of Numerical Analsis , Ed. J. Todd, McGraw-Hill. Chapter 10, 347-379. DE BOOR, C. and RICE, J. R. (1968). Least squares cubic spline approximation I - fixed knots. Report CSD TR 20, Computer Sciences Department, Purdue University, Lafayette, Indiana ' DIXON, W. J. and MASSEY, F. J., Jr. (1957). Introduction To Statistical Analysis . Second Edition. McGraw-Hill Book Company. DRAPER, N. R. and SMITH, H. (1968). Applied Regression Analysis . John Wiley and Sons, Inc. DUNCAN, A. J. (1965). Quality Control and Industrial Statistics , 3rd Ed., Richard D. Irwin. EISENHART, C. (1947). Significance of the largest of a set of sample estimates of variance. Techniques of Statistical Analysis . Ed. by C. Eisenhart, M. W. Hastay and W. A. Wallis, Statistical Research Group, Columbia University. McGraw-Hill Book Company, pp 375-382. FISHER, R. A. (1950). Statistical Methods for Research Workers , 11th Ed., Hafner Publishing Company . 164 FREUND, J. E. and WILLIAMS, F. J. (1958). fbdern Business Statistics . Prentice-Hall. GRAYBILL, F. A. (1961). An Introduction To Linear Statistical Models , Vol. 1. John Wiley § Sons , Inc . HOGBEN, DAVID (1968) . An algorithm for computing 951 confidence intervals for the mean and standard deviation. Unpublished. HOGBEN, DAVID (1969). Selected references. Precision Measurement and Calibration , Statistical Concepts and Procedures . National Bureau of Standards Special Publication 300, Vol 1, H. H. Ku, Ed., 402-407. U.S. Government Printing Office. KEMPTHORNE, 0. (1952). The- Design and Analysis of Experiments . John Wiley § Sons, Inc. KENDALL, M. G. (1948). Rank Correlation Methods . Charles Griffin § Co. KENDALL, M. G. and STUART, A. (1961). The Advanced Theory of Statistics , Vol. 2 Hafner Publishing Company, New York. KRUSKAL, J. B. (1969). Extremely portable random number generator. Comm. ACM, 12, 93-94. LONGLEY, J. W. (1967). An appraisal of least squares programs for the electronic computer from the point of view of the user. J. Amer. Statist. Assoc, 62, 819-841 MANDEL, JOHN (1964). The Statistical Analysis Of Experimental Data . Interscience . MORRISON, D. F. (1967). Multivariate Statistical Methods . McGraw Hill Book Company. NATRELLA, M. G. (1963). Experimental Statistics . National Bureau of Standards Handbook 91. U.S. Government Printing Office. OWEN, D. B. (1962). Handbook of Statistical Tables , Addison-Wesley Publishing Co. SNEDECOR, G. W. (1956). Statistical Methods, 5th Ed ., Iowa State University Press. SNEDECOR, G. W. and COCHRAN, W. G. (1967). Statistical Methods . Sixth Edition. Iowa State University Press. WALSH, P. J. (1962). Algorithm 127: ORTHO. Comm. Assoc. Comp. Mach. , 5, 511-513. See also: Barrodale, Ian (1970). Certification of Algorithm 127, ORTHO. Comm. Assoc. Comp. Mach., 13, 122. WAMPLER, R. H. (1969). An evaluation of linear least squares computer programs. J. of Res., B, NBS, 73B, 59-90. WAMPLER, R. H. (1970) . A report on the accuracy of some widely used least squares computer programs. J. Amer. Statist. Assoc, 65, 549-565. ZELEN, M. (1962). Linear estimation and related topics. Survey of Numerical Analysis , Ed. J. Todd, McGraw-Hill. Chapter 17, 558-584. 165 5. NUMERICAL ANALYSIS . 5.1 Special Integrals . CERF, ELLIPTICAL FIRST, ELLIPTICAL SECOND, ERROR, STRUVE ONE, STRUVE ZERO A full description of the complete elliptical integrals and Struve functions may be found in Abramowitz, M. , and Stegun, I. A., "Handbook of Mathematical Functions", National Bureau of Standards Applied Mathematics Series 55, Superintendent of Documents, U. S. Government Printing Office, Washington, D. C. 20402. A full description of the computational methods used to calculate the error and complementary error function may be found in Stegun, I. A. and Zucker, R. "Automatic computing methods for special functions," J. of Res. NBS-B (Math. Sciences), 74B, 211-224 (1970). CERF function of (E) put in column (C) Computes values of the complementary error function erfc(x) = 1 - erf(x), where erf(x) = (2//tt)/ x e _t dt. The range covered is limited by the capabilities of the computer. For the UNIVAC 1108, NBS computer, computations are performed for |x| £ 26.5. For |x| > 26.5, erfc(x) =0. For the values .4, .8, 1.2 and 1.6 in column 1, the instruction CERF of column 1 put in column 2 would put the numbers .57160765, .25789904, .089686025 and .023651617 into column 4. ELLIPTICAL FIRST integral of (E) put in column (C) ELLIPTICAL FIRST evaluates the complete elliptical integral of the first kind K to = !l /2 a-xsin 2 9) -3l d9 for all positive values of the parameter x less than 1 . (x=k , modulus k) . If the value of x is greater than or equal to 1.0, the result is set equal to zero and the following arithmetic diagnostic is given: ** X FOR ELLIPTICAL INTEGRALS IS =1.0 OR GREATER. RESULT IS SET TO 0.0 (n) TIMES. Let column 23 contain the following values .1, .3 and .5, then the instruction ELLIPTICAL FIRST integral of col 23 and put results in col 3 will put the values 1.6124413, 1.7138894 and 1.8540747 in column 3. ELLIPTICAL SECOND integral of (E) put in column (C) 166 ELLIPTICAL SECOND evaluates the complete integral of the second kind E(x) = J^ /2 (l-xsin 2 9)d9 for all positive values of the parameter x less than or equal to 1.0 (x=k , modulus k) . For x greater than 1.0, the result is set equal to zero, and the following aritlmetic diagnostic is given: ** X FOR ELLIPTICAL INTEGRALS IS =1.0 OR GREATER. THE RESULT IS SET TO 0.0 (n) TIMES. The instruction ELLIPTICAL SECOND integral of column 23 and put results in col 4 will store 1.5307576, 1.4453631 and 1.3506439 in column 4 assuming column 23 contains the values . 1 , .3 and . 5 (used above) . ERROR function of (E) put in column (C) Computes values of the error function erf(x) = (2//rr)/ x e _t dt. The range covered is limited by the capability of the computer used. For the NBS computer, UNIVAC 1108, the computations are performed for |x| £ 26.5. For |x| > 26.5, erf |x| = 1.0. For the numbers .4, .8, 1.2 and 1.6 in column 1, the instruction ERROR function of the values in column 1 put in column 2 would put the numbers .42839235, .74210096, .91031397 and .97634839 into column 2. Remark . Values of the normal probability integral Gau(x) = (I/v^tt)/^ e' ht dt can be obtained from values of the error function using the relation Gau(x) = ! s [l + erf(x//2)]. STRUVE ONE integral of (E) put in column (C) STRUVE ONE evaluates for real, positive values of x, the Struve function H x (x) = (2/^[x 2 /(l 2 .3) - xV(l 2 .3 2 .5) + x G /(l 2 .3 2 .5 2 .7) - ... ] If column 1 contained the values 0, 2.5 and 5, then the instruction STRUVE ONE integral of column 1 put results in col 2 will put the values 0.0, .8631542 and .80781195 in column 2. 167 STRUVE ZERO integral of (E) put in column (C) STRUVE ZERO evaluates, for real, positive values of x, the Struve function H q (x) = (2/tt)[x - x 3 /(l 2 .3 2 ) + x 5 /(l 2 .3 2 .5 2 ) - ... ]. If NRMAX = 2, the instruction STRUVE ZERO integral of 4.5 and put results in col 3 will put the value -.058543316 into rows 1 and 2 of column 5. 5.2 Polynomials . HERMITE, LAGUERRE, LEGENDRE, NORMLAGUERRE , TCHEBYSHEV, UCHEBYSHEV Each of these instructions has exactly 3 arguments. The 1st argument is an integer (without a decimal point), greater than zero, indicating the order of the polynomial. (All polynomials of order zero are identically equal to one and are not calculated.) The 2nd and 3rd arguments specify column numbers. The results will be put in the column specified by the third argument and in successive columns. Assume C3 represents the third argument. Then, the polynomial results of order one will be put in column C3, order two in column C3+1, and order n in C3+n-l column. If there are not enough successive columns to put the results of all the orders requested, the following fatal error message is printed: *** COLUMN NUMBER TOO BIG OR LESS THAN 1 All the polynomials are computed using the appropriate recursion formulas. The equations for these recursion formulas may be found in Abramowitz, M. , and Stegun, I. A., "Handbook of Mathematical Functions", National Bureau of Standards Applied Mathematics Series 55, Superintendent of Documents, U. S. Government Printing Office, Washington, D. C. 20402. The examples below assume that column 11 contains .5, 1.0, 1.5 and 2.0. HERMITE polynomial of order (n) of col (C) put in col (C) and succ. cols HERMITE evaluates the polynomial H n (x) = n!2 =o (-l) m (2x) n - 2m /(m!(n-2m)!), where N = [n/2] . The instruction HERMITE polynomial of order 4 of x in col 11 put in col 2 and succ. cols will put the following values in columns 2, 3, 4 and 5. Hj-Cx) H 2 (x) H 3 (x) H 4 (x) Row/ Column 2 3 4 5 1 1.0 -1.0 -5.0 1.0 2_ 2.0 2.0 -4.0 -20.0 3 3.0 7.0 9.0 -15.0 ? 4.0 14.0 40.0 76.0 168 LAGUERRE polynomial of order (n) of col (C) put in col (C) and succ. cols LAGUERRE evaluates the polynomial L (x) = l n (-l) ra Kx m /m!, n i -m=o wliere K = ( ) . The instruction m LAGUERRE polynomial of order 3 of col 11 put in col 7 and succ. cols will put the following results in columns 7, 8 and 9: L x (x) L 2 (x) L 3 (x) Row/ Column 8^ 9_ 1 .5 .125 -.14583333 2_ 0.0 -.5 -.66666666 3 -.5 -.875 -.6875 4 -1.0 -1.0 -.33333333 LEGENDRE polynomial of order (n) of col (C) put in col (C) and succ. cols This instruction computes the polynomial P (x) = (l/2 n )T N (-l) m Kx n_2m T, n "-111=0 where N = [n/2], K = ( n ) and T = ( 2n - 2m ). The instruction V n LEGENDRE polynomial of order 3 of x in col 11 start storing in col 15 will put the following results in columns 15, 16 and 17. P^x) P 2 (x) P 3 (x) Row/ Column 15 16 1]_ 1 0.5 -.125 -.4375 2 1.0 1.0 1.0 3 1.5 2.875 6.1874999 4 2.0 5.5 17.0 NORMLAGUERRE polynomial of order (n) of col (C) put in col (C) and succ. cols NORMLAGUERRE scales the Laguerre polynomial with the factor n!, NL (x) = n!L (x) . Thus, the instruction NORMLAGUERRE polynomial of order 3, x in col 11 start storing in col 2 will put the following results in columns 2, 3 and 4. 169 NL 1 (x) NL 2 (x) NL 3 (x) //Column 2 3 4 1 .5 .25 -.875 7 0.0 -1.0 -4.0 3 -.5 -1.75 -4.125 4~ -1.0 -2.0 -2.0 TCHEBYSHEV polynomial of order (n) of col (C) put in col (C) and succ. cols TCHEBYSHEV computes the Chebyshev polynomial of the first kind T n (x) = (n/2)^ =o (-l) m (2x) n - 2m (n-m-l)!/(m!(n-2m)!), where N = [n/2] . The instruction TCHEBYSHEV polynomial of order 2 x in col 11 start storing in col 50 will store the following values in columns 50 and 51. T x (x) T 2 (x) Row/ Column 5Q_ 51 1 .5 -.5 2 1.0 1.0 3 -1.5 3.5 4" 2.0 7.0 UCHEBYSHEV polynomial of order (n) of col (C) put in col (C) and succ. cols UCHEBYSHEV evaluates the Chebyshev polynomial of the second kind U n W = C (-D m (2x) n " 2m (n-m)!/(m!(n-2m)!), where N = [n/2] . The instruction UCHEBYSHEV polynomial of order 4 x in col 11 start storing in col 23 will put U (x), U (x), U (x) and U,(x) in columns 23, 24, 25 and 26, respectively, as follows: Row/ Column 1 2 3 4" ^Cx) U 2 (x) U 3 (x) U 4 (x) 23 24 25 26 1.0 2.0 3.0 4.0 0.0 3.0 8.0 15.0 -1.0 4.0 21.0 56.0 -1.0 5.0 55.0 209.0 170 5.3 Iteration . ISETUP, ISOLATE, ITERATE These instructions provide the most powerful, general method for: finding approximations to the roots X of the function Y = f(X), finding values of an inverse function, or inverse interpolation. The instruction ISOLATE may be used to find multiple roots for a single function value, whereas ITERATE, in conjuction with ISETUP, may be used to find a single root for each of several function values. The instructions ISETUP, ISOLATE and ITERATE locate the values of x, in the column designated by the 1st argument, such that the corresponding values of y = f(x), in the column designated by the 2nd argument, bracket the desired Y's in the column designated by the 3rd argument. Here, X denotes an exact root and x an approximation. Hence, the desired Y = f (X) and y = f (x). In ISOLATE, the 3rd argument is a constant, thus ISOLATE locates all sets of values. The other two instructions locate one set of values for each desired Y. Each of the instructions ISETUP and ITERATE has 4 arguments; all column numbers. Let the arguments be CI, C2, C3 and C4. Column CI contains values of x, column C2 corresponding values of y = f(x) and column C3 the desired values Y = f(X). Results are put in the 4 consecutive columns C4, (C4+1), (C4+2) and (C4+3) . Each instruction looks for two adjacent values of y, y. and y... , in column C2 which bracket the desired value, Y., in column C3, j j+1 i ' i.e., y. < Y. < y.,., if the y's are monotonic increasing, or y.,, < Y. < y., if the y's are j l 3+1 J+1 i j monotonic decreasing. The average of these two values, y. and y. +1 , is put in column (C4+2) . The desired value, Y., is put in column (C4+3) . The average of the corresponding values of x in column CI, x. and x , is put in column (C4+1). The instruction then inserts 3 values at equal intervals between x. and x and puts all 5 values in column C4. The process is repeated for each desired Y. The results stored are summarized in the following table. C4 C4+1 C4+2 C4+3 Xj c VVl )/2 cvy j+1 )/2 x.+lA J X. + 2A J X.+3A J Vi where A = (x. , -x.)/4. J+1 J The last two arguments of ISOLATE indicate storage columns. The information stored in these two columns is the same as C4 and C4+1 in ISETUP and ITERATE. NRMAX is set equal to 5 times the number of values located (or (p+2) times the number located by ISOLATE). Therefore, NRMAX may be either increased or decreased. If no values are located, the informative diagnostic * ITERATION HAS FOUND NO VALUES is printed and the value of NRMAX is not changed. The following informative diagnostic will be given, if the number of results to be stored is greater than the number of rows in the worksheet (normally, 201): * WORKSHEET IS TOO SHORT TO ACCOMMODATE ALL THE VALUES GENERATED BY THIS COMMAND. 171 If a root is found exactly, only one number is put in column C4 and NRMAX is reset to 1. The values in the column specified by the first argument of ISOLATE or ISETUP should be monotonic. If this is not the case, the command will be executed but the following informative diagnostic will be given: * 1ST COLUMN OF ISETUP OR ISOLATE IS NOT MONOTONIC OR IS A CONSTANT. This instruction is used initially to set up values needed by the instruction ITERATE. The following set of instructions uses ISETUP and ITERATE to find the values of x, approximating X, for which Y = cos(X) = .6, .7 and .8. The results of using this set of instructions are shown on page 173. OMNITAB EXAMPLE OF ISETUP AND ITERATE GENERATE X EQUAL TO (.1) 1.0 IN COL 1 GENERATE Y EQUAL TO .6 (.1) .8 IN COL 14 COS OF X IN 1 PUT RESULT IN COL 12 PRINT 1 12 14 WITH 6.0 SIGNIFICANT DIGITS ISETUP X IN 1, Y IN 12, DESIRED Y IN 14 START STORING IN 1 TITLE1 RESULTS OF INSTRUCTION ISETUP PRINT COLS 1***4 WITH 6.0 SIGNIFICANT DIGITS 1/COS OF X IN 1 PUT Y IN 12 2/ ITERATE X IN COL 1, Y IN 12 DESIRED Y IN 14 PUT IN 1 3/IFEQ COL 3 TO COL 4 TOLERANCE .0001 PERFORM INSTRUCTIONS 1 THRU 3 100 TIMES TITLE1 SOLVE COS (X) =.6, .7, .8 FOR X BETWEEN AT© 1 PRINT 2 3 4 WITH 6.0 SIGNIFICANT DIGITS In the 1st set of printed results, column 1 initially contains generated values which are supposed to bracket the values of X. Column 12 contains the corresponding values of y = cos(x) and column 14 the desired cosines, Y = .6, .7 and .8. These are the values used by the instruction ISETUP. The 2nd set of printed results shows the results of using ISETUP. For Y = .6, ISETUP determines that the bracketing values of y in column 2 are 0.621610 and 0.540302 and the corresponding values of x in column 1 are 0.9 and 1.0. The instruction then inserts 3 values of x (.925, .95 and .975) at equal intervals between .9 and 1.0. These 5 values were then put in the first 5 rows of column 1. The average of .90 and 1.0, .95, was put in row 1 of column 2, the average of the corresponding cosines was put in column 3 and the desired value . 6 was put in row 1 of column 4 . This process was repeated for Y = . 7 and Y = . 8 . The numbers in rows 6 through 10 of column 1 were obtained for Y = .7 and the values in rows 11 through 15 were obtained for Y = .8. Before ISETUP was used, NRMAX was equal to 11. But, after ISETUP was executed NRMAX was set equal to 15 = 5x3. The following set of instructions uses ISOLATE to solve the equation sin(X) = 0.0, for all values of X between 1.0 and 5.0. The results of using this set of instructions are shown on page 174. 172 OMNITAB EXAMPLE OF ISETUP AND ITERATE PAGE MN 1 COLUMN 12 COLUMN 14 0. 1.00000 .600000 .100000 -.995004 .700000 .200000 .980067 .800000 .300000 .955336 .400000 .921061 .500000 .877583 .600000 .825336 .700000 .764842 .800000 .696707 .900000 .621610 1.00000 .540302 OMNITAB EXAMPLE OF ISETUP AND ITERATE RESULTS OF INSTRUCTION ISETUP PAGE COLUMN COLUMN COLUMN 3 COLUMN .900000 .925000 .950000 .975000 1.00000 .950000 .750000 .650000 .580956 .730774 .795089 .600000 .700000 .800000 .700000 .725000 .750000 .775000 .800000 .600000 .625000 .650000 .675000 .700000 OMNITAB EXAMPLE OF ISETUP AND ITERATE SOLVE COS (X) =.6, .7, . 8 FOR X BETWEEN AND 1 PAGE COLUMN COLUMN COLUMN .927295 .600000 .600000 .795361 .700027 .700000 .643506 .799997 .800000 173 OMNITAB EXAMPLE OF ISOLATE SOLVE SIN(X)=0.0 FOR X BET! VEEN 1 AND 5 PAGE COLUMN 1 1.0000000 1.5000000 2.0000000 2.5000000 3.0000000 COLUMN 2 .84147098 .99749498 .90929742 .59847214 .14112001 COLUMN 31 3.5000000 4.0000000 4.5000000 5.0000000 -.35078323 -.75680249 -.97753011 -.95892427 COLUMN 1 3.0000000 3.1250000 3.2500000 3.3750000 3.5000000 COLUMN 2 .14112001 .016591892 -.10819513 -.23129381 -.35078323 COLUMN 31 3.2500000 COLUMN 1 3.1250000 3.1562500 3.1875000 3.2187500 3.2500000 COLUMN 2 .016591892 -.014656821 -.045891223 -.077080811 -.10819513 COLUMN 31 3.1875000 COLUMN 1 3.1250000 3.1328125 3.1406250 3.1484375 3.1562500 COLUMN 2 .016591892 .0087800407 .00096765344 .0068447927 .014656821 COLUMN 31 3.1406250 COLUMN 1 3.1406250 3.1425781 3.1445313 3.1464844 3.1484375 COLUMN 2 .00096765344 .00098547115 .0029385920 .0048917017 .0068447927 COLUMN 31 3.1445313 COLUMN 1 3.1406250 3.1411133 3.1416016 3.1420898 3.1425781 COLUMN 2 .00096765344 .00098547115 .0029385920 .0048917017 .0068447927 COLUMN 31 3.1416016 174 OMNITAB EXAMPLE OF ISOLATE NOTE SOLVE SIN (X) =0.0 FOR X BETWEEN 1 AND S GENERATE TRIAL VALUES OF X 1. (.5) 5. IN COL 1 NOTE1 COLUMN 1 COLUMN 2 COLUMN 31 1/SIN OF X IN COL 1 PUT SIN(X) IN COL 2 1.1/ SPACE 1.2/PRINT NOTE 1.3/NPRINT COLS 1,2,31 2/ ISOLATE X IN COL 1 FOR Y IN COL 2 VALUE=0.0 PUT IN COL 1,31 PERFORM INSTRUCTIONS 1 THRU 2 5 TEES SPACE PRINT NOTE NPRINT COLS 1,2,31 The initial values of x in column 1 and y = sin(x) in column 2 are shown in the 1st printing of columns 1, 2 and 31. NRMAX equals 9. The ISOLATE instruction is repeated five times with results printed after each execution. Since there is only one value of X between 1.0 and 5.0 for which sin(X) = 0.0, column 31 has one result. The value in column 31 tends to come closer to the correct value, it = 3.1415927, each time ISOLATE is used. Column 1 contains the 5 nearest values of x for which sin(x) =0.0 (1.0<x<5) and column 2 contains the corresponding values of y = sin(x). NRMAX is decreased to 5 after the first time ISOLATE is used. / J I ISOLATE x in (C) , y in (C) , for (K) , use (p) points, put in cols (C) and (C) / L / This instruction is the same as the one above, however the (p+2) nearest values of x are located rather than five. The ITERATE instruction is used in the repeat mode and performs exactly like ISETUP. In the example for ISETUP, ITERATE was used to refine the values of x until the specified absolute tolerance was met (e.g., .0001 in the IFEQ instruction). The 2nd PRINT shows the desired values of cos(x) = .6, .7 and .8 in column 4. Column 2 contains the values of x found by ITERATE and column 3 contains the corresponding values of cos(x), approximating the values in column 4. The 3rd PRINT shows the results after the tolerance has been satisfied. That is the values in column 3 must be equal to the values in column 4 within the tolerance of .0001. Note, if y = f (x) approximates the desired Y = f (X) to within the specified tolerance, this does not necessarily mean that the value of x found by ITERATE will approximate X within the specif ed tolerance. 5.4 Analysis . HARMONIC, INTERPOLATE, MAXMIN, SOLVE HARMONIC analysis of y in col (C) for (n) ordinates, put coefficients in col (C) HARMONIC evaluates the coefficients A, and B, for the periodic function y. = A + T r 1 Acos(k0.)+ V s n B,sin(k9.), ' L L i=l Tc i y L x=\ k l 175 where i=l,2, . . . ,n and 2<n<NRMAX; r=[n/2], s=[(n-l)/2] and n=l+r+s; 9 = 2ttx/T, T is the period and 9. = (i-l)2Tr/n. If n is even, then s=r-l and the coefficients are stored in the sequence A o , A r ... , A n/2 , B 1 , B 2 , ... , B (n _ 2)/2 . If n is odd, r=s and the coefficients are stored in the sequence A Q> A v ... , A ( n _ 1)/2 ' B i> B 2 ' ••• ' B (n-l)/2 - If NRMAX exceeds 1000, only the first 1000 coefficients will be stored. The integer (n) must be greater than 2 and must not exceed NRMAX. If (n) is less than NRMAX, only the first (n) values of y are used. For the 12 values of y in column 1 shown below, the instruction HARMONIC analysis of column 1 for 12 points, put coefficients in col 2 will put seven coefficients, A's, in rows one through seven of column 2 and five coefficients, B's, in rows eight through twelve of column 2 as follows: y A and B coefficients Row/ Column i 2 1 9.3 9.2166666 2 15.0 -6.9027767 3 17.4 3.45 4 23.0 3.3 5 37.0 -.61666666 6 31.0 .60277674 7 15.3 .24999998 8 4.0 21.089591 9 -8.0 -2.8001488 10 -13.2 1.9666667 11 -14.2 1.068098 12 -6.0 -1.0229243 The above example is from Scarborough, J. B. , "Numerical Mathematical Analysis", Oxford University Press, 1950, Cliapter XVII. INTERPOLATE x in (C) y in (C) , length (n) values (v) in (C) , pts (p) , put in (C) INTERPOLATE provides (p) -point Lagrangian interpolation for tabulated values of y = f(x) in the two columns designated by the 1st and 2nd . arguments . The length of the original table is designated by the 3rd argument, (n) . Values of the independent variable x, in the column designated by the 1st ' argument , must be in either ascending or descending order, but need not be uniformly spaced. The 4th argument indicates the number of values in the column designated by the 5th argument which are to be interpolated. The (v) interpolated values of y are put in the column designated by the 7th (last) argument. Extrapolation will be done for values outside the table, but the following informative diagnostic will be. given: * EXTRAPOLATION DONE FOR MORE THAN ONE DELTA If (p) is greater than (n) , p is set equal to n and the following informative diagnostic is given: * ORDER OF INTERPOLATION EQUALS LIST SIZE 176 Mien the value of (p) is very large, there nay not be enough room to do the amount of interpolation requested. This will happen if (p 2 +3p+v) exceeds the number of locations in the worksheet-, 12,500 (for NBS computer). The value of p is reset to the largest value possible and the following informative diagnostic is given: * ORDER OF INTERP WAS RESET TO (n) DUE TO SIZE OF SCRATCH AREA If columns 1, 2 and 3 contain the following values: Columns 12 3 0.0 0.0 .25 .15 .14943813 .35 .30 .29552020 .45 .43496553 .60 .56464246 then the instruction INTERPOLATE x in col 1 y in col 2 length 5 for 2 values in col 3 4 pts. put in 4 will put the values .24740159 and .34289405 in column 4. MAXMIN x in (C) y in (C) put max x. in (C) max y in (C) min x in (C) min y in (C) MAXMIN finds all the maxima and minima of a function (y = f (x)) defined by its tabulated values. The validity depends on the adequacy of the interval of tabulation and monotonic arrangement of x for a single valued function. Each extreme value in a sequence of y values is identified and a parabola, y = ax 2 +bx+c, is fitted through the extreme point and one on each side. The maxima and minima are determined by setting the derivative equal to zero to obtain x = -b/2a. The stored results may be used to determine an envelope for the y values. If the y values are monotonic, the following fatal error message is printed: * MAXMIN HAS FOUND NO EXTREMA If an apparent extremum is found where the x values are identical, the extremum is ignored and the following informative diagnostic is given: * MAXMIN HAS FOUND AND IGNORED A TRIAD OF X'S WITH AT LEAST TWO IDENTICAL VALUES Assume column 10 contains the values of x in degrees -10, 0, 10, ... , 370 and column 11 contains the corresponding values of y = cos(x), then the instruction MAXMIN x in col 10 y in col 11, put max x in 12 y in 13, put min x in 14 y in 15 finds two maxima whose coordinates are put in rows 1 and 2 of columns 12 and 13 and one minimum whose coordinates are put in row 1 of columns 14 and 15 as follows: max x max y mm x mm y Row/ Column 12 13 14 IS 1 3.8314035-08 1.0 180.0 -1.0 2 360.0 1.0000002 The command EXTREMA is a synonym for MAXMIN. 177 SOLVE lin eqs with coeffs in (R) , (C) size (r)x(c) consts in (C) , put sol in (C) SOLVE provides the solution of a set of simultaneous linear equations, Ax = y, where A is a square matrix of coefficients defined by the first four arguments, y is a vector of constants and x is the solution vector. See sections 7 and 8 for the method of defining an array or matrix. The 3rd and 4th arguments should be equal. If a solution is obtained and the list of commands is printed at the end of a set of OMNITAB instructions, a smallest error bound will be given below the command SOLVE in the following form: ++ . . . +SMALLEST ERROR BOUND ON INVERTED MATRIX IS + . . .+ For a complete description of the meaning of the error bound, see section 8.5. If r^c, the following informative diagnostic will be given: * NO. OF ROWS NOT = TO COLS. MATRIX USED IS LARGEST SQUARE Furthermore, if r and c are inadvertently too large, the following fatal error message is given: *** DEFINED MATRIX OVERFLOWS WORKSHEET In order to solve a set of equations a large amount of scratch area is needed. If 2(r+2) is greater than the worksheet area, the following fatal error is given: *** INSUFFICIENT SCRATCH AREA Finally, if the matrix of coefficients, A, is singular, the following fatal error is given: *** MATRIX IS (NEARLY) SINGULAR A, and the vector of constant, y, of a set of 10 If the matrix of coefficients, simultaneous linear equations is: 2-100000000 •12-10000000 0-12-1000000 00-12-100000 000-12-10000 0000-12-1000 00000-12-100 000000-12-10 0000000-12-1 00000000-12 0.5 1.0 l.S 2.0 2.5 3.0 3.5 4.0 4.5 5.0 Then, the instruction SOLVE eqs. with coeff matrix A in 1,5 size 10x10, y in col 1, put solution in col 2 will put the solution (x vector) in column 2. 178 5.5 Integration. GAUSS QUADRATURE Column 2 5.4545431 10.090905 13.090903 14.636356 14.909083 14.090901 12.363629 9.9090850 6.9090868 3.5454524 GAUSS QUADRATURE with (K) points, from (K) to (K) , put x in (C) , weights in (C) GAUSS QUADRATURE generates the (n) abscissas, coefficients, w., for the Gaussian quadrature formula and the corresponding weight /f(x)dx = l n .w.f(x.), where n is the number of points specified by the first argument in the instruction. The region of integration is divided into n/4 intervals. In each of the intervals the 4-point Gaussian quadrature abscissas and weight coefficients are computed. The abscissas are put in the column specified by the 4th argument and the weight coefficients are put in the column specified by the 5th (last) argument. The limits of integration (a and b) are defined by the 2nd and 3rd arguments of the instruction. (The 1st, 2nd and 3rd arguments may be integers.) The value of (n) must be greater than zero, some multiple of 4 and less than the current number of rows in the worksheet (normally, 201). If the value of NRMAX, before execution of this instruction, is less than n, NRMAX will be set equal to n. Otherwise, NRMAX will remain unchanged. The instruction GAUSS QUADRATURE using 8 pts from a = 0.0 to b = 1.0, put x in col 4 wts in col 5 would put the following results in the worksheet: Row/Column 4 5 1 .034715922 .086963711 2 .16500474 .16303629 3 .33499526 .16303629 4 .46528408 .086963711 5 .53471592 .086963711 6 .66500474 .16303629 7 .83499526 .16303629 8 .96528408 .086963711 179 6. REPEAT MODE . A discussion of how to use instructions repeatedly (in the repeat mode) was given in section B2. This section gives specific details on the use of individual instructions. The reader should refer to section B2 for the general discussion and further details. Instructions in sections 6.1 and 6.2 use the argument (N) , where (N) is an instruction number. See section B2.1. These are the only instructions in PART C which use this type of argument . 6.1 Repeated Execution . BEGIN, FINISH, PERFORM The PERFORM instruction executes numbered instructions which have been previously stored for later use. There are three forms. of the instruction having 3, 2 and 1 arguments, respectively. The commands EXECUTE and REPEAT are commonly used synonyms for PERFORM. Instructions may be stored for later use by numbering them, as described in section B2.1. An alternative (often less desirable) method for storing instructions is by the use of the BEGIN and FINISH commands which provide automatic numbering of the instructions between them. BEGIN and FINISH must not be numbered (stored), but a PERFORM instruction can be stored for later use. The instructions which follow are stored for later use until a FINISH instruction is encountered. Each instruction is given a unique number, starting with 1 and continuing in steps of 1 until the FINISH instruction is found. The FINISH instruction is not stored. The instruction numbers are automatically printed in the LIST OF COMMANDS, DATA, AND DIAGNOSTICS on the left of the stored instructions. / 7 I BEGIN storing instructions, but start numbering with number (N) / / / Similar to above instruction; except the numbering of instructions, which follow, begins with the number (N) rather than one. Numbering of instructions continues in steps of one until a FINISH instruction is encountered. In this instruction (only), the instruction number (N) must be an integer, without a decimal point. The integer must be greater than zero and less than 1000. Warning, if the instruction number is written with a decimal point, it will not only create a fatal error here, but also will be indicated in some subsequent instructions. For example, when a reference is made to any of the stored instructions by another instruction (such as PERFORM or RESTORE) , a fatal error will be indicated each time because the referenced instruction cannot be found. Instructs OMNITAB to terminate the storing and automatic numbering of instructions initiated by a BEGIN instruction. The FINISH instruction does not cause the stored instructions to be executed. This happens only when PERFORM is executed. 180 PERFORM instructions numbered (N) through (N) , (t) times Causes the execution of all instructions which have instruction numbers between the number designated by the first argument and the number designated by the second argument inclusive. The group of instructions is executed (t) times (unless countermanded by one of the branching instructions in sections 6.3 and 6.4). Prior to the use of a PERFORM instruction, there must be stored instructions with numbers corresponding to the first two arguments of the PERFORM instruction; otherwise a fatal error will occur. The 1st argument must be less than or equal to the 2nd argument. / / PERFORM instructions numbered (N) through (N) once / / / / If the third argument is missing, it is assumed to be equal to one. / / PERFORM instruction numbered (N) once / / / / If the second and third arguments are missing, the second argument is assumed to be equal to the first and the third argument is assumed to be equal to one. 6.2 Incrementing Instructions . INCREMENT, RESTORE The two instructions described in this section are used to change the arguments of a stored (numbered) instruction from one repeat 'of a set of instructions to another. Upon execution of an INCREMENT instruction, the arguments of the instruction numbered (N) are modified as indicated. The INCREMENT instruction always has exactly one more argument than the instruction which is being incremented. The arguments (after (N)) must be of the same kind as the corresponding arguments in the instruction (N) . The 2nd argument of the INCREMENT instruction is added to the 1st argument of the indicated stored instruction, the 3rd argument of the INCREMENT instruction is added to the 2nd argument of the stored instruction, and so forth. If the instruction 41/ DEFINE the value 1.0 into column 54 is to be incremented, the INCREMENT instruction must have 3 (1+2) arguments. The second argument, corresponding to 1.0, must be written with a decimal point and the third argument, corresponding to 54, must be written without a decimal point. Hence, the instruction might be 42/ INCREMENT instruction 41 by 1.0 and -1 After the execution of instruction 42, instruction 41 will, in effect, read DEFINE 2.0 into column 53. An INCREMENT instruction can not be used to increment itself, i.e., the argument (N) must not be the same as the number of the INCREMENT instruction. See section B2.3 for further details. 181 The INCREMENT instruction does not have to be numbered (stored) . The instructions 1/ DEFINE the number 1.0 into column 1 2/ INCREMENT instr 1 by 1.0 and PERFORM instrs 1 thru 2, 9 times INCREMENT instr 1 by 8.6 and PERFORM instrs 1 thru 2, 9 times would put 9.0 into column 1 after the execution of the first PERFORM instruction and would put 26.6 into column 1 after the execution of the second PERFORM instruction. When the instruction is executed, the arguments of the instruction numbered (N) will be replaced by the specified arguments. The number of arguments after (N) must be exactly the same as the number of arguments in the instruction numbered (N) . Also , the arguments in the RESTORE instruction (after (N)) must be of the same kind as the corresponding arguments in the instruction (N) . A RESTORE instruction does not have to be numbered. 6.3 Branching, Three Arguments . COMPARE, IFEQ, IFNE The instructions described in sections 6.3 and 6.4 may only be used as stored instructions in the repeat mode. They provide the capability of branching within a group of stored, instructions by (1) terminating the execution of a subset of stored instructions or by (2) terminating the execution of a PERFORM instruction. The instructions in this section all have three arguments and use either a relative tolerance or an absolute tolerance specified by the last argument. The instructions in section 6.4 are similar but have only two arguments and do not use a tolerance. Each instruction makes a comparison between two numbers or sets of numbers specified by the first two arguments, which may be either a constant or a column number. If the tolerance is not satisfied, or the condition is false, for any pair of values, no action is taken and, in effect, the instruction is ignored. If the designated tolerance is satisfied for all pairs of values, the action taken depends upon whether the instruction is (a) the last instruction in a subset of stored instructions, or (b) is not the last instruction in the subset. If the tolerance is satisfied, or the condition is true, and the branching instruction is the last in the subset of stored instructions, the execution of the PERFORM instruction is terminated. For example, in the instructions 21/ DEFINE the value 1.0 into column 1 22/ INCREMENT instr 21 by 1.0 and 23/ IFEQ 4.0 to column 1 within 0.5 24/ PERFORM instrs 21 thru 23, 7 times the IFEQ instruction is the last in the subset of instructions and the PERFORM instruction will be terminated when every number in column 1 equals 4.0. In this case, the execution of instructions 21 through 23 will be terminated after the fourth time and the number 4.0 will be in column 1. The IFEQ instruction does not have to be the last stored instruction in the entire set, but only the last in the subset specified by the PERFORM instruction which executes the IFEQ instruction. In other words, the second argument of the PERFORM instruction, 23, must be the same as the instruction number, 23, of the IFEQ instruction. 182 If a tolerance is satisfied and the branching instruction is not the last instruction in the subset of stored instructions, the remaining instructions after the branching instruction are hot executed. In the execution of the instructions 31/ DEFINE the value 1.0 into column 1 32/ INCREMENT instr 31 by 1.0 and 33/ IFEQ 3.0 to column 1 within 0.5 34/ ADD the number 10.0 to col 1 and put in col 11 35/ INCREMENT 34 by 0.0 and 1 PERFORM instrs 31 thru 35, 5 times the number 5.0 will be put into column 1 and the numbers 11.0, 12.0, 14.0 and 15.0 into columns 11 through 14. In the comparison of 3.0 with column 1, in instruction 33, the equality condition is true after the 3rd execution of instruction 31 and instructions 34 and 35 are not executed - this time only. The next two times that instruction 33 is executed the condition is not true and instructions 34 and 35 are executed. COMPARE (E) to (E) using relative tolerance (E) This is the only branching instruction which uses a relative tolerance. If the first argument is a constant, let ARG1 equal the constant"! If the first argument is a column number, let ARG1 equal the number in any row of the column. Define ARG2 and ARG3 in a similar manner. For ARG1 f and ARG2 f 0, the relative tolerance is satisfied if | (ARG1-ARG2)/ARG2| < |ARG3|. If ARG1=0 or'ARG2=0, the tolerance is satisfied if |ARG1-ARG2| < |ARG3|. Also, if ARG1=0 or ARG2=0, the following arithmetic fault message is given: ** ONE OF THE VALUES COMPARED IS ZERO, ABSOLUTE TOLERANCE WAS USED (n) TIMES For the numbers Column 56 Column 57 Column 58 1.0 5.0 0.9 5.0 1.0 0.5 -2.0 0.0 1.0 the instruction COMPARE column 56 with 57 using relative tolerance in column 58 would compare the numbers 0.8, 4.0 and 2.0 with 0.9, 0.5 and 1.0, respectively. The tolerance is met in row 1, but not in rows 2 or 3. Hence, the tolerance is not satisfied. The specified tolerance is satisfied, if, and only if, the absolute value of the difference between all the numbers designated by the first two arguments is equal to the number (s) designated by the third argument. For the numbers 183 Column 26 Column 27 Column 28 1.6 2.3 0.8 1.5 2.7 0.6 -5.3 1.8 7.9 the absolute tolerance in column 28 is met in rows 1 and 3, but not in row 2. Since the tolerance is not satisfied in all three rows, the tolerance in the instruction IFEQ column 26 to column 27 within absolute tolerance in column 28 is not satisfied. IFNE (E) to (E) within absolute tolerance (E) This instruction operates exactly as the IFEQ instruction above with "not equal" replacing equal. 6.4 Branching, Two Arguments . IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE These six instructions each have exactly two arguments. None of the instructions uses a tolerance, but in all other respects they operate like the IFEQ and IFNE instructions which are described in section 6.3. In fact, these two instructions have optional forms which are described here. The branching instructions with two arguments do not use a tolerance. Instead, the specified condition is either true or"Talse. I 7 I IFEQ (E) to (E) / / / The condition is true, if, and only if, the number (s) specified by the first argument is (are all ) equal to the number (s) specified by the second argument. IFGE (E) to (E) The condition is true, if, and only if, the number(s) specified by the first argument is (are all) greater than or equal to the number(s) specified by the second argument. IFGT (E) to (E) The condition is true, if, and only if, the number (s) specified by the first argument is (are all ) greater than the number (s) specified by the second argument. IFLE (E) to (E) The condition is true, if, and only if, the number(s) specified by the first argument is (are all) less than or equal to the number(s) specified by the second argument. 184 IFLT (E) to [E) The condition is true, if, and only if, the number(s) specified by the first argument is (are all) less than the number (s) specified by the second argument. / / IFNE (E) to (E) 7 / / / The condition is true, if, and only if, the number(s) specified by the first argument is [are all) not equal to the number(s) specified by the second argument. 185 ARRAY OPERATIONS. In. general, OMNITAB instructions perform operations on columns of data (not necessarily consecutive), working from the first row down to row NRMAX. In this section, instructions are described which perform operations on a rectangular (or square) array (of consecutive rows and columns), which may be located anywhere in the worksheet, including that portion below NRMAX. None of the instructions here have any effect on the value of NRMAX nor are they influenced in any way by NRMAX. Each command begins with the letter A, standing for array. The array operation instructions described herein can be used very effectively for data manipulation. Four arguments designate an array in the worksheet: (R) = the row number of the value in the upper left hand corner of the array (C) = the column number of the value in the upper left hand corner of the array (r) = the number of rows in the array (c) = the number of columns in the array The first four arguments (all integers) of each instruction in this section are always of the above form and designate an array. Some of the instructions have additional arguments which may designate a second or third array. The descriptions of the instructions in sections 7.1 and 7.2 include an example based upon the following data in the worksheet: Row/ Column 11 12 13 Row/ Column 26 27 28 2.0 6.0 0.0 4.0 8.0 -2.0 14 15 2.0 3.0 5.0 ■2.0 2.0 4.0 and the numbers 1.0, 2.0, 3.0, 4.0 and 5.0 in column 41. Care should be used with instructions for array operations to avoid designating an array which is partially outside the worksheet. In most instructions, if the arguments specify an array partially outside the worksheet, the following fatal error message appears: *** DEFINED MATRIX OVERFLOWS WORKSHEET 7.1 Arithmetic. AADD, ADIVIDE, AMULTIPLY, ARAISE, ASUBTRACT Each of the instructions in this section has three forms having 10, 8 and 7 arguments respectively. All involve three arrays. The third array is designated simply by (R) , (C) without using the size (r)x(c), since the size is always the same as the size of the first array. In the first form (10 arguments) the second array is completely designated by the four arguments (R),(C) and (r)x(c), even though the size of this array must be the same as the size of the first array. The second form (8 arguments) is the same as the first except the size (r)x(c) of the second array is omitted from the instruction. The third form (7 arguments) is used when the second array is a constant (scalar, with r=c=l) or column (vector, with R=l, r=(r) of first array and c=l). The ADIVIDE, AMULTIPLY and ARAISE instructions in this section can produce the same type of arithmetic faults as the analagous instructions of section 2.1. See section 2.1 and section B3.3 for further details. 186 AADD the array (R),(C) size (r)x(c) to array (R),(C) size (r)x(c) put in (R) , (C) Two arrays with the same dimensions are added together element by element. The instruction AADD the array in 7,11 size 2x3 to array in 14,26 size 2x3 put in 4,32 would give the following result: Row/Column 32. 33 34 4 4.0 5.0 10.0 5^ 9.0 2.0 2.0 I ' / / AADD the array in CR),(C) size (r)x(c) to arrav (R) , (C) and put in (R) , (C) / / . / Same as above; except the row and column size of the second array are ommitted. The instruction (equivalent to the one above) AADD the array in 7,11 of size 2x3 to the array in 14,26 and put in 4,32 would give the following result: Row/Column 32 33 34 4 4.0 5.0 10.0 _5 9.0 2.0 2.0 I 7 I AADD the array in (R) , (C) of size [r) , (c) to (E) and put array in (R) , CC) / / / Allows the addition of either a column or a constant to an array. When a column is added to an array, it is added to each column of the array. The first (r) rows of the column are used regardless of the value of NRMAX, The instruction AADD the array in 7,11 of size 2x3 to column 41 and put in 4,32 would give the following result: Row/Column 32 33 34 4 3.0 1.0 9.0 _5 8.0 6.0 0.0 When a constant is added to an array, it is added to each element in the array. The instruction AADD the array in 7,11 of size 2x3 to -1.3 and put in 4,32 would give the following result: 187 Row/Column 12_ 33 34 4 0.7 -1.3 6.7 5 4.7 2.7 -3.3 ADIVIDE array (R) , (C) size Cr)x(c) by array (R) , (C) size (r)x(c) put in (R) , (C) The first array is divided, element by element, by the second array and stored as indicated. The command ADIV is an acceptable abbreviation of ADIVIDE in all three forms of the instruction. The instruction ADIVIDE the array in 7,11 size 2x3 by the array in 14,26 size 2x3 and put in 4,32 would give the following result: Row/Column _32 33 34 4 1.0 0.0 4.0 5 2.0 -2.0 -0.5 I ' ~ ' " 7 I ADIVIDE the array in (R) , (C) size (r)x(c) by the array (R),(C) put in (R),[C) / / / Same as above; except the row and column size of the second array are omitted. / ' ~ " ' " ~~ 7 I ADIVIDE the array in (R) , (C) of size (r)x(c) by (E) and put in (R) , (C) / / _ , / Allows for the division of an array by either a column or a constant. When an array is divided by a column, each column of the array is divided by that column. The first (r) rows of the designated column are used regardless of the value of NRMAX. The instruction ADIVIDE the array in 7,11 of size 2x3 by column 41 and put in 4,32 would give the following result: Row/Column 32 33 34 4 2.0 0.0 8.0 I 3.0 2,0 -1.0 When an array is divided by a constant, each number in the array is divided by the constant. The instruction ADIVIDE the array in 7,11 of size 2x3 by 2.0 and put in 4,32 would give the following result: Row/Column 32 33 34 4 1.0 0.0 4.0 "5" 3.0 2.0 -1.0 MULTIPLY array (R) , (C) size (r)x(c) by (R) , (C) size (r)x(c) put in (R) , (C) Element by element multiplication is performed on two arrays. The command AMULT is an acceptable abbreviation for MULTIPLY in all three forms of the instruction. The instruction AMULTIPLY the array in7,ll size 2x3 by the array in 14,26 size 2x3 and put in 4,32 would give the following result: Row/Column 32 33 34 4 4.0 0.0 16.0 5 18.0 -8.0 -8.0 / 7 I AMULTIPLY array in (R) , (C) size (r)x(c) by array in (R) , (C) put in (R) , (C) / / / Same as above; except the row and column size of the second array are omitted. / " 7 I AMULTIPLY the array in (R) , (C) of size (r)x(c) by (E) and put array in (R) , (C) / / , / Allows the multiplication of an array by either a column or a constant. When an array is multiplied by a column, each column of the array is multiplied by that column, element by element. The first (r) rows of the designated column are used regardless of the value of NRMAX. The instruction AMULTIPLY the array in 7,11 of size 2x3 by column 41 'and put in 4,32 would give the following result: Row/ Column 32 35 34 4 2.0 0.0 8.0 5_ 12.0 8.0 -4.0 When an array is multiplied by a constant, each number in the array is multiplied by that constant. The instruction AMULTIPLY the array in 7,11 of size 2x3 by 2.0 and put in 4,32 would give the following result: Row/Column 32_ 33_ 34 4 4.0 0.0 16.0 5 12.0 8.0 -4.0 ARAISE array (R) , (C) size (r)x(c) to array (R) , (C) size (r)x(c) put in (R),(C) 189 The first array is raised, element by element, to the power of the second array. The instruction ARAISE the array in 7,11 size 2x3 to array in 14,26 size 2x3 and put in 4,32 would give the following result: Row/ Column 32 33 34 4 4.0 0.0 64.0 5 216.0 .0625 16.0 / 7 I ARAISE the array in (R) , (C) size (r)x(c) to array (R) , (C) put array in (R),(C) / / / Same as above; except the row and column size of the second array are omitted. / 7 I ARAISE the array in (R) , (C) of size (r)x(c) to (E) and put array in (R),(C) / / / Allows the first array to be raised to a column or a constant. When an array is raised to a column, each column of the array is raised to the column, row by row. The first (r) rows of the column are used regardless of the value of NRMAX. The instruction ARAISE the array in 7,11 of size 2x3 to column 41 and put in 4,32 would give the following result: Row/ Column 32_ 33 34 4 2.0 0.0 8.0 \ 36.0 16.0 4.0 When an array is raised to a constant, each number in the array is raised to the constant. The instruction ARAISE the array in 7,11 of size 2x3 to 2.0 and put in 4,32 would give the following result: Row/ Column 32 33 34 4 4.0 0.0 64.0 5" 36.0 16.0 4.0 ASUBTRACT array (R) , (C) size (r)x(c) minus (R) , (C) size (r)x(c) put in (R),(C) The second array is subtracted element by element from the first array. Note the difference in the order of subtraction from that in a SUBTRACT instruction (see section 2.1). The command ASUB is an acceptable abbreviation for ASUBTRACT in all three forms of the instruction. The instruction ASUBTRACT the array in 7,11 size 2x3 minus array in 14,26 size 2x3 put in 4,32 190 would give the following result: Row/Column 32 33 34 4 0.0 -5.0 6.0 3.0 6.0 -6.0 I ' ' 1 I ASUBTRACT array (R) , (Q of size (r)x(c) minus the array (R) , (C) put in (R) , (C) / L _. . / Same as above; except the row and column size of the second array are omitted. / ' : 7 / ASUBTRACT the array in (R) , (C) of size (r)x(c) minus (E) and put array in (R) , (C) / / / Allows the subtraction of either a column or a constant from an array. When a column is subtracted from an array, it is subtracted from each column of the array. The first (r) rows of the column are used regardless of the value of NRMAX, The instruction ASUBTRACT the array in 7,11 of size 2x3 minus col 41 and put in 4,32 would give the following result: Row/Column 32 11 34 4 1.0 -1.0 7.0 5 4.0 2.0 -4.0 When a constant is subtracted from an array, it is subtracted from each number in the array. The instruction ASUBTRACT the array in 7,11 of size 2x3 minus 2.0 and put in 4,32 would give the following result: Row/Column 32 33 34 4 0.0 -2.0 6.0 ][ 4.0 2.0 -4.0 7.2 Data Manipulation . ADEFINE, AERASE, AMOVE, ATRANSPOSE ADEFINE the array in (R) , (C) of size [r)x(c) to be equal to (K) Every element in the designated array is set equal to the constant (K) , The instruction ADEFINE the array in 4,32 of size 2x3 to be equal to 7.5 would give the following result: 191 Row/ Column 32 33_ 34 4 7.5 7.5 7.5 5 7.5 7.5 7.5 AERASE the array in (R),(C) of size (r)x(c) Every entry in the array is set equal to zero. AZERO is a synonym for AERASE. Actually, an ADEFINE instruction with K = 0.0 performs the same operation as the AERASE instruction which has the same first four arguments. The instruction AERASE the array in 4,32 of size 2x3 would give the following result: Row/Column 32 33 34 4 0.0 0.0 0.0 5 0.0 0.0 0.0 AMOVE the array in (R),(C) of size (r)x(c) to (R) , (C) Moves an array from one part of the worksheet to another. The second named array may overlap the first named array. The command MOVE, described in section 3.2, is synonymous with the command AMOVE. The instruction MOVE the array in 7,11 of size 2x3 to the array in 4,32 would give the following result: Row/ Column 32 33 34 4 2.0 0.0 8.0 5 6.0 4.0 -2.0 ATRANSPOSE the array in (R) , (C) of size (r)x(c) into (R) , (C) Rotates an array 90 degrees so that the first row of the array becomes the first column of the new array, the second row becomes the second column and so forth. Hence, if the first array has (m) rows and (n) columns, the transpose will have (n) rows and (m) columns. If c=l, the instruction will transpose a column into a row, whereas if r=l (and the 2nd last argument is R=l) , the instruction will transpose a row into a column. The instruction ATRANSPOSE the array in 7,11 size 2x3 into 4,32 would give the following result: 192 Row/ Column 32 33 2.0 0.0 8.0 6.0 4.0 -2.0 7.3 Summarization . AAVERAGE, ACOALESCE There are two forms of each instruction, for a particular value (K) in an array. If informative diagnostic is given The second form of each instruction searches the number is not found, the following * VALUE REQUESTED IN SHORTEN, ACOALESCE OR AAVERAGE NOT FOUND. The two instructions are similar. The instruction ACOALESCE computes certain sums as described, whereas the instruction AAVERAGE computes the corresponding averages. The description of ACOALESCE should be read before turning to the description of AAVERAGE. Examples in this section are based on the following array in the worksheet: //Column 11 12 13 14 21 1.0 0.0 1.0 2.0 22 0.0 2.0 1.0 3.0 23 1.0 2.0 0.0 1.0 24" 0.0 1.0 2.0 0.0 25 2.0 1.0 3.0 1.0 Similar to ACOALESCE below; except averages are computed instead of sums, instruction The AAVERAGE on first col of array in 21,11 size 5x4 and put in 41,31 would yield Row/ Column 41 4T 4T 31 1.0 0.0 2.0 32 1.0 1.5 1.0 33 0.5 1.5 3.0 34 1.5 1.5 1.0 Column 31 is the same as in the example of ACOALESCE below. The number 0.5 in row 41 of column 33 is the average of 1.0 and 0.0 in rows of 21 and 23 of column 13. The other numbers were obtained in a similar manner. Remark . If the first column of the array contains positive integers only and each integer from 1 to the largest appears in at least one row, then AAVERAGE, with R=l, computes the same averages as the instruction ONEWAY, described in section 4.3. For the following data in the worksheet : 193 w/Column 11 12 13 14 1 l 4 9 2 2 9 8 2 3 1 4 3 7 J 2 3 7 6 5 3 2 7 5 F 2 3 9 7 7 4 4 3 7 3 4 6 1 S 5 2 2 iff 4 7 4 8 the instruction AAVERAGE 1,11 size 10x4 put in 1,21 puts the same results in columns 21, 22, 23 and 24 as the three instructions SONEWAY 12, 11 put in 21, 20, 22, 20 SONEWAY 13, 11 put in 21, 20, 23, 20 SONEWAY 14, 11 put in 21, 20, 24, 20 namely ^/Column 21 22 23 24 1 1.0 2.0 3.5 8.0 1 2.0 5.0 8.0 5.0 3 3.0 3.0 6.5 3.0 1 4.0 5.5 2.0 5.5 7 5.0 2.0 0.0 2.0 I 7 / AAVERAGE on (T) in first col of array (R),(C) size (r)x(c) put row in (R),(C) / / / Bears the same relation to the form above that the second form of ACOALESCE bears to the first form. The instruction AAVERAGE on 1.0 in first col of array in 21,11 size 5x4 and put row in 41,31 would put the numbers 1.0, 1.0, 0.5 and 1.5 into row 41 of columns 31 to 34. ACOALESCE on first col of array (R),(C) size (Y)x(c) put array in (R),(C) First, the instruction finds the m different values in the first column of the first array and puts these values into the first column of the second array. For any set of two or more numbers in the first column which are equal, only the first number in each set is put into the second array. Hence, the number of rows in the second array is m, not r. Let a, b, c, be the numbers in the first row of the second array. Then, b is the sum of all the numbers in the rows of column 2 which contain the number a in the same rows of column 1; c is the sum of all numbers in the rows of column 3 which have a in the same row of column 1; and so on. The remaining rows are constructed in a similar way. The instruction ACOALESCE on first col of array in 21,11 size 5x4, put array in 41,31 194 would yield the results Row/Column 31 32 33 34 41 1.0 2.0 1.0 3.0 TI 0.0 3.0 3.0 3.0 TS 2.0 1.0 3.0 1.0 Column 11 has three distinct numbers 1.0, 0.0 and 2.0. These numbers are put into rows 41, 42 and 43 of column 31. The number 1.0 in row 41 of column 31 appears in rows 21 and 23 of column 11. Hence, the numbers 2.0, 1.0 and 3,0 in row 41 of columns 32 to 34 are the sum, respectively, of: 0.0 and 2.0 in rows 21 and 23 of column 12; 1.0 and 0.0 in rows 21 and 23 of column 13; and 2.0 and 1.0 in rows 21 and 23 of column 14. The number 0.0 in row 42 of column 31 appears in rows 22 and 24 of column 11. Hence, the numbers 3.0, 3.0 and 3.0 in row 42 of columns 32 to 34 are the sum, respectively, of: 2.0 and 1.0 in rows 22 and 24 of column 12; 1.0 and 2.0 in rows 22 and 24 of column 13; and 3.0 and 0.0 in rows 22 and 24 of column 14. The numbers in row 43 were obtained in a similar way. I 7 / ACOALESCE on (K) in first col of array (R),(C) size (r)x(c) put row in (R),(C) / / , / Similar to above instruction. The second array has only 1 row and (c) columns. The first column contains the constant (K) . Each other column contains the sum of all numbers in the corresponding column of the first array in those rows which have the constant (K) in the same row of column 1. The instruction ACOALESCE on 1.0 in first col of array in 21,11 of size 5x4 put array in in 41,31 would put the numbers 1.0, 2.0, 1.0 and 3.0 into row 41 of columns 31 through 34. The number 1.0, (K) , appears in rows 21 and 23 of the first array. Hence, 2.0 in column 32 is the sum of 0.0 and 2.0 in rows 21 and 23 of column 12; 1.0 is the sum of 1.0 and 0.0 in rows 21 and 23 of column 13; and 3.0 is the sum of 2.0 and 1.0 in rows 21 and 23 of column 14. 7.4 Properties Of An Array . APROPERTIES, SAPROPERTIES There are six different forms of APROPERTIES. Each instruction automatically prints 18 different properties of the designated array. The six forms differ only in the amount of information which is stored. The first form does not provide any storage. The remaining forms provide storage of results as follows: (2) properties, (3) column averages, (4) properties and column averages, (5) column averages and row averages, and (6) properties, column averages and row averages. An example of the APROPERTIES, using the sixth form, is given on page 197. The printing of the properties shows the row in which the property is stored, the description and the value of the property. The meaning of most of the descriptions should be clear, but a few may require a word of explanation. The trace of an array [1) is the sum of the numbers in the principal diagonal; that is the sum of the numbers in the diagonal starting with the number in the upper left-hand corner and moving down and to the right. If the array is not square, the number of values used in the sum is given in parentheses. Item 14, the sum of squares about the mean, is the same as the (corrected) total sum of squares printed by the instruction TWOWAY, described in section 4.4. Items 15 and 16 are the within sums of squares and should not be confused with the between sums of squares printed by TWOWAY. All forms of the instruction, except the first, have an additional form which has the letter S at the beginning of the command. The letter S indicates that the automatic printing of the properties is to be suppressed and only the requested results are stored. 195 These forms are listed at the end of this section, but they are not described. If an attempt is made to put the letter S at the beginning of the command in the first form, the instruction will be ignored and the following informative diagnostic will be given: * COMMAND IGNORED - S BEFORE COMMAND NAME MEANINGLESS IF NO STORAGE REQUESTED APROPERTIES of the array in (R) , (C) of size (r)x(c) This form of the instruction prints the 18 properties of the specified array, but provides no storage of results. / T I APROPERTIES of the array in (R) , (C) of size (r)x(c) put in column (C) /• / / The properties of the specified array are both printed and put in the first 18 rows of the column designated by the last argument. / 7 I APROPERTIES of array in (R) , (C) size (r)x(c), put column ave's in (R),(C) / / ____/ The (c) column averages are put in the row designated by the last pair of arguments. / 7 I APROPERTIES of (R) , (C) size (r)x(c), put prop in (C) , col ave's in (R) , (C) / / / Same as above form, but the properties are also stored in the worksheet. The properties of the array are put in the first 18 rows of the column designated by the 5th argument and the column averages are put in the row designated by the last two arguments. / 7 / APROPERTIES of (R) , (C) size (r)x(c), put col ave's in (R) , (C) , row ave's (R) , (C) / / / The column averages are put in the roi\r indicated by the third pair of arguments and the row averages are put in the column designated by the fourth (last) pair of arguments. / 7 / APROPERTIES array (R) , (C) size (r)x(c), in (C) , ave's in (R) , (C) and (R) , (C) / / / Same as above, but the properties are also stored in the worksheet. The properties of the array are put in the first 18 rows of the designated column (5th argument) . The (c) column averages are put in a row vector designated by the second last pair of arguments. The (r) row averages are put in a column vector designated by the last pair of arguments . The example on page 197 uses this form of the instruction. SAPROPERTIES of the array in (R) , (C) of size (r)x(c) put in column (C) / -J I SAPROPERTIES of array in (R) , (C) size (r)x(c), put column ave's in (R) , (C) / / / 196 OMNITAB 12/2/70 APROPERTIES EXAMPLE PAGE GENERAL PROPERTIES OF 4 X 5 ARRAY STARTING LOCATION ( 3, 7) 1 TRACE ( 4 VALUES USED) 0.000000 2 TRACE NO. 2 -1.000000+02 3 MAXIMUM ELEMENT 1.000000+01 4 MINIMUM ELEMENT -9.000000+00 5 MAXIMUM ELEMENT IN ABS VALUE 1.000000+01 6 MINIMUM ELEMENT IN ABS VALUE 0.000000 7 MIN NON-ZERO ELEM IN ABS VAL 1.000000+00 8 NUMBER OF POSITIVE ELEMENTS 10 9 NUMBER OF ZERO ELEMENTS 1 10 NUMBER OF NEGATIVE ELEMENTS 9 11 SUM OF TERMS 1.000000+01 12 AVERAGE 5.000000-01 13 SUM OF SQUARES 6.700000+02 14 SUM OF SQUARES ABOUT MEAN 6.650000+02 15 WITHIN ROWS SUM OF SQUARES 4.000000+01 16 -WITHIN COLS SUM OF SQUARES 6.250000+02 17 SUM OF ABSOLUTE VALUES 1.000000+02 18 AVERAGE OF ABSOLUTE VALUES 5.000000+00 -9.0000000 -4.0000000 1.0000000 6.0000000 -1.5000000 -8.0000000 -3.0000000 2.0000000 7.0000000 -.50000000 -7.0000000 -2.0000000 3.0000000 8.0000000 .50000000 -6.0000000 -1.0000000 4.0000000 9.0000000 1.5000000 -5.0000000 0. 5.0000000 10.000000 2.5000000 -7.0000000 -2.0000000 3.0000000 8.0000000 0. OMNITAB 12/2/70 APROPERTIES EXAMPLE PAGE 2 LIST OF COMMANDS, DATA AND DIAGNOSTICS READ DATA INTO COLUMNS 1, 2, 3, 4 AND 5 -9 -8 -7 -6 -5 -4 -3 -2 -1 12 3 4 5 6 7 8 9 10 AMOVE 1,1 4,5 TO 3,7 APROPERTIES OF ARRAY IN 3,7 4X5 PUT COL AVE' S IN 7,7 ROW AVE 'S IN 3,12 SPACE 2 APRINT ARRAY IN 3,7 OF SIZE 5X6 197 / T I SAPROPERTIES of (R) , (C) size (r)x(c), put prop in (C) , col ave's in (R) , (C) / / I I J I SAPROPERTIES of (R) , (C) size (r)x(c), put col ave's in (R) , (C) , row ave's (R) , (C) / / : i i j I SAPROPERTIES array (R) , (C) size (r)x(c), in (C) , ave's in (R) , (C) and (R) , (C) / / / 7.5 Printing . APRINT, APRINT "L" These two instructions are listed here for completeness, but they are described in section 1.8. APRINT the array in (R) , (C) of size (r)x(c) APRINT "L" format, the array in (R) , (C) of size (r)x(c) 7.6 Matrix Synonyms . No knowledge of matrix algebra is required to use the instructions described above. Although the ter.ns array and matrix are sometimes used interchangeably, they are often used in different contexts in OMNITAB. In fact, some array instructions perform quite different operations from the counterpart matrix instruction. An AMULTIPLY instruction simply performs element by element multiplication, whereas the MULTIPLY instruction operates in accordance with the rules of matrix algebra. Nevertheless, there are several array operation instructions which are synonymous with a matrix operation instruction described in section 8. Each matrix equivalent of an array instruction is listed below. (See section B1.13 for a complete list of synonyms.) Array Command (s ) AADD ADEFINE AERASE (AZERO) AMOVE ' APRINT "L" ASUBTRACT ATRANSPOSE Matrix Command (s) MADD MDEFINE MERASE (MZERO) MMOVE (also MOVE) MPRINT "L" MSUBTRACT MTRANSPOSE 198 8. MATRIX OPERATIONS . This section describes instructions which perform operations on matrices occupying any location in the worksheet. All of the instructions operate independently of NRMAX; particularly MDIAGONAL, MMATVEC, MVECMAT, and M (AD). Each command (except ^PROPERTIES) begins with the letter M to denote a matrix operation. Except in MMATVEC, the first four arguments always specify the beginning location of a matrix, (a row and column number) and the size of the matrix (number of rows and columns in the matrix) . The beginning location of a matrbc is the location of the number in the upper left-hand corner of the matrix. Diagnostics are given if the specified matrix does not fit in the worksheet. 8.1 Defining Operations . MDEFINE, MDIAGONAL, MERASE, M IDENTITY These commands are used to define the elements of a matrix. MDEFINE the matrix in (R) , (C) of size (r)x(c) to have all elements equal to (K) All the (r)x(c) elements in the matrix beginning in row (R) of column (C) of the worksheet are set equal to the constant (K) . The constant (K) must be written with a decimal point. This instruction produces the same results as MERASE (or MZERO) , below, if the constant (K) = 0.0. The instruction MDEFINE the matrix in row 6 of col 3 size 2x3 to be 12.245 would give the following result: Row/Column 3_ 4_ 5_ 6 12.245 12.245 12.245 7 12.245 12.245 12.245 MDIAGONAL the matrix in (R) , (C) of size (r)x(c) equal to (E) on the diagonal The main diagonal elements of the (r)x(c) matrix beginning in row (R) of column (C) are set equal to the specified constant or equal to the 1st (r) numbers (independent of NRMAX) in the column specified by the fifth argument. Only the main diagonal elements are changed. The matrix must be square, i.e., the 3rd and 4th arguments must be equal. The instruction MDIAGONAL matrix in row 6 col 3 size 3x3 equal to 2.2 on the diagonal would give the following results: Row/Column 3 4_ 5_ 6 2.2 7 2.2 F 2.2 199 MERASE the matrix in (R) , (C) of size (r)x (c) Every number in the (r)x(c) matrix beginning in row (R) of column (C) is set equal to zero. MZERO is a synonym for MERASE. The instruction MERASE the matrix in row 6 col 3 of size 2x3 would give the following result: Row/Column 111 6 0.0 0.0 0.0 7 0.0 0.0 0.0 MIDENTITY in (R) , (C) of size (r)x(c) All the non-diagonal elements of the specified matrix in row (R) of column (C) of size (r)x(c) are set equal to zero. The main diagonal elements are set equal to one. If the size (r)x(c) does not specify a square matrix, the main diagonal elements of the square matrix, whose length is the smaller of (r) and (c) , are set equal to one. The instruction MIDENTITY matrix in row 6 col 3 of size 2x3 would give the following result: Row/ Column 3 4_ 5_ 6 1.0 0.0 0.0 7 0.0 1.0 0.0 8.2 Moving Operations . MMATVEC, MMOVE, MTRANSPOSE, MVECDIAGONAL, MVECMAT These commands are very useful for data manipulation. MMATVEC make by rows column (C) into the matrix in (R) , (C) of size (r)x(c) The column (vector), specified by the 1st argument, is transformed into the matrix specified by the last four arguments. The first (c) numbers in column (C) become the 1st row of the matrix, the next (c) numbers become the 2nd row of the matrix, and so forth. The first (r)x(c) numbers in column (C) are used to construct the matrix (regardless of the value of NRMAX) . Assume the numbers one through six are in column 21 , then the instruction MMATVEC make by rows col 21 into a matrix in location 6,3 size 2x3 would give the following result: Row/Column 111 6 1.0 2.0 3.0 7 4.0 5.0 6.0 200 I T I MMATVEC col vector in (R) , (C) into matrix in (R) , (C) size (r)x(c) / / / Same as the above instruction; except the column vector starts in row (R) , rather than row 1, of column (C). This form of MMATVEC is equivalent to the one above, if the 1st argument equals one. MOVE the matrix in (R) , (C) of size (r)x(c) to matrix in (R),(C) Moves a matrix from one part of the worksheet to another. The new matrix may overlap the first matrix. The command MOVE, described in section 3.2, is synonomous with the command MMOVE. Assume the following numbers are in the worksheet: Row/Column 12 3 4 2 1.0 2.0 3.0 0.0 1 4.0 5.0 6.0 0.0 T 7.0 8.0 9.0 0.0 The instruction MMOVE the matrix in row 2 col 1 size 2x3 to matrix in row 3 col 2 would give the following result: Row/Column 12 3 4 2 1.0 2.0 3.0 0.0 ? 4.0 1.0 2.0 3.0 T 7.0 4.0 5.0 6.0 MTRANSPOSE the matrix in (R) , (C) size (r)x(c) into matrix in (R) , (C) The transpose of the matrix beginning in row (R) of column (C) of size (r)x(c) is stored in the location designated by the last two arguments in the instruction. The first row of the original matrix becomes the first column of the new matrix, the second row becomes the second column, and so forth. The size of the transposed matrix will be (c)x(r). This instruction may be used to transpose a column into a row by setting (c)=l or a row into a column by setting (r)=l. The instruction MTRANSPOSE the matrix in row 6 col 2 size 2x3 into row 6 col 3 would give the following result: original matrix transposed matrix Row/Column 2 3 4 2 1 6 2.0 5.0 3.0 2.0 8.0 7 8.0 9.0 10.0 5.0 9.0 3.0 10.0 201 MVECDIAGONAL the matrix in (R) , (C) size (r)x(c), put diagonal in column (C) The elements on the main diagonal of the matrix beginning in row (R) of column (C) of size (r)x(c) are stored in the column specified by the last argument. If r/c, and the matrix is not square, the number of values put in the designated column will equal the smaller of (r) and (c) . If the following matrix is in the worksheet Row/ Column 2 3 4 6 2.0 5.0 3.0 7 8.0 9.0 10.0 then, the instruction MVECDIAGONAL the matrix in row 6 col 2 size 2x3 into col 5 will put the following two values in column 5: Row/Column 5 1 2.0 7 9.0 / 7 I MVECDIAGONAL matrix in (R) , (C) of size (r)x(c), put column vector in (R),(C) / / / This instruction is similar to the one above; except the diagonal elements of the matrix are put in the starting location designated by the last two arguments of the instruction. Using the data from the previous example, the instruction MVECDIAGONAL the matrix in row 6 col 2 size 2x3 put in row 6 col 5 would give the following result: Row/ Column _5 6 2.0 7 9.0 MVECMAT vectorize row by row matrix in (R) , (C) size (r)x(c) into column (C) The elements in the matrix beginning in row (R) of column (C) of size (r)x(c) are put, as a column vector, in the rows of the column designated by the last argument. The 1st row of the matrix is put in the first (c) rows of the column, the 2nd row is put in the next (c) rows of the column and so forth. The number of values stored is (jr)x(c) , and NRMAX is not changed. The instruction MVECMAT vectorize by rows matrix in row 6 col 2 size 2x3 into col 5 would create from the matrix on the left below, the column shown on the right: 202 Matr ix Column tow/ Column 2 3 4 Row 5 6 2.0 5.0 3.0 1 2.0 7 8.0 9.0 10.0 7 5.0 1 I 7 3.0 8.0 9.0 10.0 / 7 I MVECMAT matrix in (R) , (C) size (r)x(c), put vector into (R) , (C) and below / / / Same as the above instruction; except storage begins in row (R) , instead of row 1, of column (C) , as indicated by the last two arguments of the instruction. Using the previous matrix, the instruction MVECMAT vectorize by rows matrix in row 6 col 2 size 2x3 into row 2 col 5 would give the following result: if/ Column 5 2 2.0 3 5.0 T 3.0 r 8.0 F 9.0 7 10.0 8.3 Matrix Arithmetic . MADD, MKRONECKER, MMULTIPLY, MRAISE, MSCALAR, MSUBTRACT For the instructions in this section, define the matrix A = (a..), where a.. is the element in the ith row and jth column. Other matrices, such as B and C, are defined in a similar manner. MADD the matrix in (R) , (C) size (r)x(c) to (R) , (C) size (r)x(c) put in (R) , (C) This instruction computes the matrix sum A+B = C, where A and B are the matrices specified by the first eight arguments and the result is put in the location determined by the 9th and 10th (last two) arguments. The size of A must be the same as the size of B, i.e., the 4th and 5th arguments should equal the 7th and 8th arguments, respectively. The elements of C are c. = a.. + b... where i=l,2 r and j=l,2,...,c. ij ij 13 Using the matrices A and B on the left below, the instruction MADD matrix A in row 4, col 2 size 3x2 to B in 3,7 size 3x2, put C in 6,12 will compute the matrix C = A+B shown on the right: 203 Matrix A Matrix B Matrix C = A+B Row/Column 1 I Row/ Column 7 8 Row/Column 12 13 4 F 2.0 3.0 5.0 9.0 8.0 -2.0 3 2.0 T 6.0 "5" -10.0 -5.0 8.0 12.0 6 7 4.0 11.0 -2.0 -2.0 17.0 10.0 / / MADD / the matrix in (R) (C) o£ size (r)x(c) to matrix in (R),(C) put in (R) , (C) / / / Same as the above instruction; except the arguments which specify the size of the second matrix (7th and 8th arguments above) are omitted. The instruction MADD 4,2 size 3x2 to 3,7, put in 6,12 is equivalent to the one in the above example of MADD. MKRONECKER product (R) , (C) size (r)x(c) by (R) , (Q size (r)x(c) put in (R) , (C) The Kronecker product A©B = C is computed, where the matrices A and B are specified by the first eight arguments and ^he result, C, is put in the location determined by the last two arguments. Let the size of A be mxn, 3rd and 4th arguments, and the size of B be rxs, 7th and 8th arguments. Then, the size of C is mrxns. The matrix C may be partioned as follows: " a ll B a 12 B. • a in B a 21 B a 22 B. • a 2n B \l B a m 2 B • . a *B mn Using the matrices A and B on the left below, the instruction MKRONECKER product of A in 4,3 size 2x2 by B in 2,10 size 3x2, put C in 3,12 will compute the matrix C shown on the right: Matrix A Matrix B Matrix C = A©B i/ Column 3 4 Row/Column 10 11 Row/Column 12 13 14 15 4 2.0 4.0 2 1.0 7.0 3 2.0 14.0 4.0 28.0 T -3.0 0.0 T 3.0 -2.0 T 6.0 -4.0 12.0 -8.0 T 1.0 0.0 "5" 2.0 0.0 4.0 0.0 7 -3.0 -9.0 -3.0 -21.0 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 : MMULTIPLY matrix 00 , CO size (r)x(c) by (R), (C) size (r)x(c) put in (R), (C) 204 Computes the matrix product AB = C, where A and B are the matrices specified by the first 8 arguments and the matrix C is stored in the location determined by the last two arguments. The number of columns of A, the 4th argument (c), must equal the number of rows of B, the 7th argument (r) . A fatal error occurs if the 4th and 7th arguments are not equal. This constraint is necessary because matrix multiplication is not commutative, i.e., AB i BA, in general. In fact, if the product AB is defined, the product BA may not be defined. Let n equal both the 4th and 7th arguments, then the elements of the matrix C are: c. . -a-J i 'U=l 1 1U UJ' where i=l,2,...,r (3rd argument) and j=l,2,...,c (8th argument). Using the matrices A and B The command MMULT is an acceptable abbreviation for MMULTIPLY. on the left below, the instruction MMULTIPLY matrix A in 4,3 size 2x2 by B in 2,10 size 2x3, put C in 6,20 will compute the matrix C = AB shown on the right: Matrix A Matrix B Matrix C = AB //Column 3 4 Row/ Column 10 11 12 Row/ Column 20 21 22 4 2.0 5" 3.0 6.0 -2.0 2 7 6.0 3.0 -1.0 0.0 7.0 2.0 6 7 30.0 12.0 -2.0 -3.0 26.0 17.0 In computing C, each individual product is stored as a double precision number. The products are then sorted in ascending order. The summation, which is also performed in double precision arithmetic, begins with the mid-point value(s) and proceeds from there. For example, suppose the sorted products were -4, -2, 1, 2 and 4, then the summation would be performed as follows: 1 + (-2) + 2 + (-4) +4. This method of computation is used to provide greater accuracy. For large matrices it will increase the computing time appreciably. The matrix specified by the first four arguments is multiplied by itself (K) times, where (K) is the 5th argument and a constant. If (K) is not an integer, it is truncated to an integer and no diagnostic is printed. ((K) can be written without a decimal point.) If the value of (K) is zero, the indentity matrix is computed. The matrix must be square, i.e., the number of rows (r) must equal the number of columns (c) . Using the matrix A on the left below, the instruction MRAISE matrix A in row 4 col 3 of size 2x2 to 3.0 power, put in 6,20 will compute the result Y shown on the right: Matrix A Matrix Y = A Row/ Column 4 2.0 3.0 6.0 -2.0 Row/Column 6 7 20_ 44.0 66.0 21 132.0 -44.0 MSCALAR matrix (R),(C) of size (r)x(c) by constant (K), put matrix in (R) , (C) The scalar product Y =sA is computed, where A is the first matrix and s is the scalar (constant) (K) . The matrices Y and A have the same size, (r)x(c). The elements of Y are 205 y ij = sa ij' where i=l,2,...,r and j=l,2,...,c. MSCALAR is actually a special case of MULTIPLY (section 7.1). The instruction MSCALAR matrix A in 4,3 size 2x2 by -2.0, put Y in 6,20 using the matrix A on the left below, will compute the result Y = sA shown on the right: Matrix A Matrix Y = sA Row/ Column 3 4 Row/ Column 20 21 4 5 2.0 6.0 3.0 -2.0 6 7 -4.0 -6.0 -12.0 4.0 : MSUBTRACT mat (R) , (C) size (r)x(c) minus mat (R) , (C) size (r)x(c) into (R),(C) : The matrix subtraction A-B = C is computed, with A the 1st matrix, B the 2nd matrix and C the 3rd matrix. The size of B must agree with the size of A. The matrices A, B and C all have the same dimensions, (r)x(c). The elements of C are C. = a.. - b.., where i=l,2,...,r and j=l,2,...,c. The command MSUB may be used as an abbreviation for MSUBTRACT. Note, the order of subtraction is the reverse of that in SUBTRACT described in section 2.1. Using the matrices A and B on the left below, the instruction MSUBTRACT matrix A in 4,2 size 3x2, minus B in 3,7 size 3x2, put C in 6,12 will compute C = A-B shown on 'the right: Matrix A Matrix B Matrix C = A-B '/C Dlumn 2 3 Row/ Column 7 8 Row/ Column 12 13 4 2.0 3.0 3 2.0 -5.0 6 0.0 8.0 5" 5.0 9.0 4" 6.0 8.0 7 -1.0 1.0 6 8.0 -2.0 7 -10.0 12.0 S" 18.0 -14.0 / T I MSUBTRACT matrix (R) , (C) size (r)x(c) minus mat (R) , (C) put into (R) , (C) / / / Same as the above instruction; except the size of the second matrix is not specified. The size of the second matrix is taken to be the same as the size of the first matrix. 8.4 Special Matrix Multiplication . M(AD), M(AV), M(DA), M(V'A), M(X'X), M(XX'), M(X'AX), M(XAX') Each of the commands in this section contain right and left parentheses . Several of the commands contain an apostrophe to denote the transpose of a matrix (or vector) . These are the only commands in the CMNITAB II system which use either parentheses or an apostrophe. Each instruction performs a special form of matrix multiplication. In each case, the result of the multiplication is a matrix (or vector) denoted by Y with elements y... The notation X = (x..), A = (a..), etc. will be used to denote a matrix X with elements x.. in 13-" 13" 13 206 the ith row and jth column, a matrix A with elements a. . in the ith row and jth column, etc.. The basic definition of matrix: multiplication is given in section 8.3. iM(AD) mat (R) , (C) size (r)x(c) times mat with (C) in diag, put mat in (R) , (C) The first matrix A is postm ultiplied by a diagonal matrix, D, whose main diagonal elements are the 1st (c) numbers (independent of NRMAX) in the column (C) , designated by the 5th argument. The matrix D is not actually stored in the worksheet. The result is the matrix Y = AD, with elements y.. = d.a.., where i=l,2,...,r and j=l,2,...,c. The matrices A and Y have the same dimensions. The instruction M(AD) matrix A in 4,2 size 3x2 times diagonal in col 4, put Y in 3,7 used with the data on the left below, will compute the matrix Y = AD shown on the right: Matrix A Diagonal of D Matrix Y = AD 2 3 Row/ Column 4 Row/Column 4 5 6~ 2.0 5.0 8.0 3.0 9.0 -2.0 2.0 -3.0 Row/ Column 3 4" 5" 1 8 4.0 -9.0 10.0 -27.0 16.0 6.0 M(AV) mat (R) , (C) size (r)x(c) by vector in col (C) put vector in col (C) The first matrix, A, is postm ultiplied by the vector V in column (C) to form the column vector Y = AV, with elements y. = Y -.v a. , where i=l,2,...,r. 1 ^u=l u 1U The column vector Y is put in the first (r) rows of column (C) . The instruction M(AV) matrix A in 4,2 size 3x2 by vector in col 4, put Y in column 7 using the matrix A and the vector V on the right below, will compute the result Y = AV shown on the right: Vector V Matrix A Row/ Column 2 3 4 2.0 3.0 5 5.0 9.0 F 8.0 -2.0 Row/ Column 1 7 2.0 -3.0 Vector Y = AV Row/ Column 7 1 1 J -5.0 -17.0 22.0 r I M(AV) mat (R),(C) size (r)x(c) by column (C) put vector in row (R) of col (C) / / / Same as the above instruction; except the storage of the column vector Y = AV begins in the designated row (R) of column (C) , rather than the 1st row of column (C) , where (R) and (C) are the 6th and 7th (last two) arguments. 207 M(DA) mat (R) , (C) size (r)x(c) premult by mat with (C) in diag, put in (R) , (C) The first matrix, A, is premultiplied by a diagonal matrix, D, whose main diagonal elements are in column (C), designated by the 5th argument. The matrix D is not actually stored in the worksheet. The result is Y = DA, with elements y ij = d l a lj' where i=1 » 2 »---» r and j=l,2,...,c. Y has the same dimensions as A. The instruction M(DA) matrix A in 4,2 size 3x2, premultiplied by col 4, put Y in 3,7 used with the data on the left below, will compute the result shown on the right: Diagonal of D Matrix A Matrix Y = DA Row/Column 4 Row/Column 2_ _3 Row/Column 1_ 8 1 2.0 4 2.0 3.0 3 4.0 6.0 2~ -3.0 "5" 5.0 9.0 J -15.0 -27.0 3" 1.0 o" 8.0 -2.0 "5" 8.0 -2.0 MfV'A) mat (R),(C) size (r)x(c), vector in col (C), put row vector in row (R) The matrix A is prem ultiplied by the transpose of a column vector, V, to form the row vector Y = V'A, with elements y. = V n v a ., where j = l,2,...,c. ' J L U=1 U UJ * J ' ' ' The result is put in row (R) , 6th argument, of the first (c) columns. The instruction M(V'A) matrix A in 4,2 size 3x2 by vector in col 4 put Y in row 7 would give the following results: Column Vector V Matrix A Row Vector Y = V'A Row/Column 4 Row/Column 2 3 Row/Column 1 2 1 2.0 4 2.0 3.0 7 -3.0 -23.0 1 -3.0 "5" 5.0 9.0 T 1.0 ~5 8.0 -2.0 / : 7 I M(V'A) mat (R) , (C) size (r)x(c), vector in col (C), put row vector in (R) , (C) / / / Same as above instruction; except storage of the row vector begins in the designated column, rather than in column 1. Using the data from the example above, the instruction MfV'A) matrix A in 4,2 size 3x2 by vector in col 4 put Y in row 7 of col 3 on would give the following results: 208 Column Vector V Row/Column 4_ 1 2.0 1 -3.0 3" 1.0 Matrix A Row Vector Y = V'A Row/ Column 2 3 Row/ Column 3 4 4 3" 6" 2.0 5.0 8.0 3.0 9.0 -2.0 7 -3.0 -23. M(X'X) x -matrix in (R) , (C) of size (r)x(c) into (R) , (C) The matrix X is premultiplied by its transpose to produce Y = X'X, with elements y.. = T n x .x ., where i=l,2...c and j=1.2..c. The size of Y is (c)x(c). The instruction M(X'X) matrix in 4,2 size 3x2 put Y in 3,7 applied to the matrix X on the left below, will compute the matrix Y = X'X shown on the right: Matrix X Matrix Y = X'X r/Cc ilumn 2 3 Row/ Column 7 8_ 4 5 5" 2.0 5.0 8.0 3.0 9.0 -2.0 3 93.0 35.0 35.0 94.0 M(XX') x-matrix in (R) , (C) of size (r)x(c) into (R) , (C) Similar to the above instruction; except the matrix X is postm ultiplied by its transpose. The result is Y = XX' with elements v.. = y° n x. x. , where i=l,2,...,r and j=l,2,...,r. ' 1J L U=1 1U JU Tlie size of Y is (r)x(r). The instruction M(XX') matrix in 4,2 size 3x2 put Y in 3,7 Matrix X J.± V. Matrix Y = XX' Row/ Column 2 3 Row/ Column 7 8 9 4 2.0 3.0 3 13.0 37.0 10.0 5" 5.0 9.0 4" 37.0 106.0 22.0 F 8.0 -2.0 5 10.0 22.0 68.0 : M(X'AX) a -mat in cr: ,(C) size (r)x (c), x-mat (R),(C) size (r)x(c), into (R),(C) : The transformation Y = X'AX is computed. A is the first matrix specified, X is the second matrix specified and the results are stored in the third matrix, Y. Matrix A is 209 square and of size nxn, specified by the 3rd and 4th arguments. Matrix X has size nxm, specified by the 7th and 8th arguments. The number of rows of X, 7th argument, must equal the number of rows and columns of A, 3rd and 4th arguments. The matrix Y is square of size mxm. Let a. . be the elements of A, x. . be the elements of X and y. . be the elements of the iJ iJ ij result Y. Then, y ij = ^u=l^v=l a uv x ui x vj ' where i=1 > 2 >---. m and j=l,2,...,m (8th argument). If m=l, Y is a quadratic form. For the matrices A and X on the left below, the instruction M(X'AX) matrix A in 2,3 size 2x2, X in 3,5 size 2x3, put Y in 2,8 will compute the result Y = X'AX shown on the right: Matrix A 4 Matrix Row/ Column 5 X 6 7 Matrix Y = X'AX Row/Column 8 9 Row/ Column 3 10 2 1.0 3 2.0 3.0 -4.0 3 -2.0 J -1.0 0.0 5.0 -2.0 0.0 2 10.0 -10.0 3 0.0 -100.0 4~ 10.0 -30.0 8.0 -20.0 4.0 M(XAX') a -mat in (R) , (C) size (r)x(c), x-mat (R) , (C) size (r)x(c), into (R) , (C) The transformation Y = XAX' is computed. A is the first matrix specified, X is the second matrix specified and the results are stored in the third matrix, Y. Matrix A is square and of size nxn, specified by the 3rd and 4th arguments. Matrix X has size mxn, specified by the 7th and 8th arguments. The number of columns of X, 8th argument, must equal- the number of rows and columns of A, 3rd and 4th arguments. The matrix Y is square of size mxm. Let a., be the elements of A, x.. be the elements of X and v.. be the elements of the result Y. Then, y..=y .y -.a x. x. , where i=l,2, . . . ,m and j=l,2, . . . ,m (7 th argument) . 1J t 'U=l i 'V=l UV 1U JV For the matrices A and X on the left below, the instruction M(XAX') matrix A in 2,3 size 2x2, X in 3,5 size 3x2, put Y in 2,8 will compute the matrix Y = XAX' shown on the right: Matrix A Matrix X Matrix Y = XAX ' Row/Column 8_ 9 10 2 4.0 -28.0 -12.0 3 -18.0 -124.0 4.0 4 -10.0 20.0 20.0 MEIGEN, MINVERT, MORTHO, MTRIANGULARIZE The four instructions described here are useful in matrix analysis. There are three forms of MEIGEN which compute (i) only the eigenvalues, (ii) only the eigenvectors, and (iii) both the eigenvalues and eigenvectors. An example is given for the last form. The 210 Row/ Column 3 4 Row/ Column 5 6 2 1.0 3.0 3 -2.0 0.0 3 2.0 -4.0 T -1.0 5.0 5 3.0 1.0 8.5 Matrix Analysis. error messages which can be printed by any of the three forms of MEIGEN are only listed under the first form. The computations performed by MORTHO and MTRIANGULARIZE are related to the computations performed by the FIT instruction described in section 4.5. MEIGEN of the matrix in (R),(C) of size (r)x(c), put eigenvalues in column (C) For the matrix A designated by the first four arguments, the instruction computes the eigenvalues (characteristic roots or latent roots) of the matrix A and puts them in descending order in the column designated by the 5th (last) argument. The matrix A must be square and symmetric. The eigenvalues, X., are the roots of the characteristic polynomial |A-XI| = 0. The Jacobi method is used to compute the eigenvalues. If A is not square, 3rd and 4th arguments equal, the following informative diagnostic is printed: * NO OF ROWS NOT = TO COLS. MATRIX USED LARGEST SQUARE If (r)x(c) exceeds 6, 750+2 (r) (in NBS computer), the following fatal error message is printed: *** INSUFFICIENT SCRATCH AREA If the matrix A is not symmetric, the following fatal error mesage is printed: *** MATRIX IS NOT SYMMETRIC / _ , , , j I MEIGEN of matrix in (R) , (C) size (r)x-(c), put eigenvectors in (R) , (C) / / / This form of MEIGEN computes the eigenvectors, but not the eigenvalues. For the matrix A and eigenvalues X., the eigenvectors, x., satisfy the relation Ax. = X.x., where i = l,2,,..,r=c. The eigenvectors are stored as a matrix as determined by the 5th and 6th (last two) arguments. The eigenvectors are stored as column vectors according to the descending order of the eigenvalues, X.. Each vector is normalized so that the sum of squares of the elements is unity. Thus, except for sign, each vector is unique. When two eigenvalues are equal, the corresponding eigenvectors will be orthogonal. f— ~ ' ' 7 I MEIGEN matrix in (R) , (C) size (r)x(c), put values in (C) vectors in (R) , (C) / / , , , / Both the eigenvalues and eigenvectors of the symmetric matrix, designated by the first four arguments, are computed and stored. The (r)=(c) eigenvalues are put in the column designated by the 5th argument and the eigenvectors are stored as a matrix in the location determined by the 6th and 7th (last two) arguments. Using the following matrix, A: Row/ Column 3 4 5 6 2 4.0 4.0 -2.0 -6.0 T -2.0 -6.0 4.0 4.0 I -6.0 -2.0 4.0 4.0 z 4.0 4.0 -6.0 -2.0 the instruction 211 MEIGEN matrix: A in row 2, col 3 size 4x4, put values in col 7, vectors in 2,8 would compute the four eigenvalues and eigenvectors of A and put them in the worksheet as follows: Eigenvalues Eigenvectors //Column 7 Row/ Column 8 9 10 11 1 2.5600000+02 2 16.000000 3 16.000000 4" -1.1324343-06 2 3 4" 5 .50000000 .50000001 -.50000002 -.50000001 -.53154530 .53154529 -.46632566 .46632564 -.46632566 .46632564 .53154528 -.53154529 .49999999 .50000002 .50000000 .49999999 MINVERT the matrix; in (R) , (C) of size (r)x(c), put inverse in (R) , (C) MINVERT computes the inverse, A" 1 , of the matrix A, such that AA" 1 = I. The 1st four arguments specify the location and size of A and the 5th and 6th (last two) arguments determine the location of the inverse of A, A" 1 . The commands INVERT and MINVERT are synonomous. An example of the use of MINVERT to invert a (scaled) Hilbert matrix is shown on page 213. (The scaling factor 60.0 was used to make each element an integer.) The matrix A must be square so that the 3rd and 4th arguments, (r) and (c) , must be equal. If r^c, the following informative diagnostic is printed: * NO OF ROWS NOT = TO COLS. MATRIX USED IS LARGEST SQUARE. If r and c are inadvertently too large, the following fatal error occurs: *** DEFINED MATRIX OVERFLOWS WORKSHEET In order to invert a matrix, a large amount of space (scratch area) is required in the computer, f'f (r) exceeds 77, or 2(r+2) 2 is greater than the size of the worksheet, 12,500, the following fatal error message is printed: *** INSUFFICIENT SCRATCH AREA Finally, if the matrix, A, is singular, the following fatal error message is printed: *** MATRIX IS (NEARLY) SINGULAR The inversion algorithm used was written by A. R. Sadaka and submitted to the SHARE library. Elementary row operations on the input matrix, A, transform it into the unit matrix of the same magnitude. The matrix of these transformations is the inverse. Selective pivoting is used to minimize truncation error accumulation. Further description of the SHARE subroutines may be obtained in SHARE write-ups 3180, and 3181, Catalog of Programs for IBM 704-709-7040-7090 and 7094 Data Processing Systems, IBM, File No. 7040/7090-20. This algorithm enables error bounds to be computed. In the LIST OF COMMANDS, DATA AND DIAGNOSTICS, an error bound is printed immediately below the command MINVERT, if an inverse has been obtained. The form of the error bound, as seen on page 213, is ►+ SMALLEST ERROR BOUND ON INVERTED MATRIX IS .1-04 ++++ 212 1 o o o o o o CJl o o o X o o o o o o 5 o o o H LO O O tO tO E-J Ci PJ m j en en o o X Cn O O OC i 01 o o pl-l CJlOO O cn en m m n 00 rt 1 to" to H cn U 01 O 5 cn r— cx> w O CT» O cn LO CJl t— 1 LO lo £ e 000 000 o o o Kl o 00 000 000 OU1N 00 I CS1 OriH \0 O O O COO OOO OOO 10 O O to tO PL, c OOO ro cni to w OOO O i-H 1— 1 h4 CM C 1 -OOOO OOO 000 § OOO O CD O OOO O O O LTS \0 C^l O w tO CM tH 1 to to 3 X 1 H OJ H S 1 ■a- **■ Ln 6 x OOO ON N OOO h OOO gs 1—1 d ■* OOO w CD O O O O CD M OOO J u-3 O O OOO 1 — I Hvom H iOMN K C-i W Uh « O ►j M w £ —1 hO O pj CJ> iH CV1 tO to ^ g ^ Q g Pi K) N H t^) Oi CO M 1 HHW HOOOOl\00 1 C< £ S 213 z..| 2 ] Let A be the matrix to be inverted and X be the result of the inversion. Define Y = I- AX. Furthermore, for any square matrix Z = (z..), size nxn, let N(Z) be a norm of Z defined in any of the following three ways: 1 - 1 (1) N(Z) = [} n . X ) J (2) N(Z) = n max |z..| (3) N(Z) = max [ n lz..|. In order to guarantee that X be a good approximation to A' 1 , it is necessary to have ERR = N(X)N(Y)/[1-N(Y)] be positive and small. The instruction MINVERT computes ERR for each of the norms defined above and the smallest one is printed as the error bound. A description of error checking methods may be found in Chapter 6 of "Survey of Numerical Analysis," J. Todd, Ed., McGraw-Hill (1962). Note, AX being close to I does not guarantee that X is close to A" 1 . The error bound is a very conservative estimate of the error in computing the inverse. In the example on page 213, the error bound indicates that the results of the inversion are accurate to about 5 significant digits, whereas, in reality, the results are correct to 6 significant digits. The Gram- Schmidt orthonormalization process is applied to the matrix, X, designated by the first four arguments, using the weights in the first (r) rows of the column designated by the 5th argument. The orthonormal vectors are stored as a (r)x(c) matrix as indicated by the 6th and 7th (last two ) arguments. See "Orthonormal izing codes in numerical analysis.", P. J. Davis, Chapter 10 of "Survey of Numerical Analysis," J. Todd, Ed., McGraw-Hill (1962). All weights must be positive. Otherwise, a fatal error occurs. If r<c, the instruction is not executed and a fatal error message is given. If the last two arguments do not specify enough area in the worksheet to store the orthonormal vectors, the following informative diagnostic is given: * PARTIAL STORAGE OF MATRIX For the following matrix, X, in 1,1 and weights in column 10: Row/Column 12 3 4 Column 10 1 1.0 1.0 2.0 2.0 2.0 2 1.0 2.0 2.0 3.0 2.0 3 0.0 3.0 3.0 3.0 1.0 4~ 0.0 2.0 1.0 1.0 1.0 5 0.0 1.0 -3.0 0.0 1.0 6 0.0 1.0 0.0 0.0 1.0 7 0.0 0.0 1.0 0.0 1.0 the instruction MORTHO matrix X in 1,1 size 7x4 with weights in col 10, put in 11,41 would compute the transformation $ = XA, where A is an upper triangular matrix. Shown below is the matrix 16.$, rather than $, for ease in reading: 214 Row/ Column 41 42 43 44 11 8.0 -2.0 1.0 -3.0 17 8.0 2.0 -1.0 3.0 IT 0.0 12.0 6.0 6.0 IT 0.0 8.0 0.0 -8.0 IS 0.0 4.0 -14.0 2.0 Iff 0.0 4.0 -2.0 -10.0 IT 0.0 0.0 4.0 -4.0 In a FIT instruction (section 4.5), $ = XA is computed from the set of vectors X. The matrices A and X are related by X'WX = (A -1 ) '(A -1 ), where W is a diagonal matrix with the column of weights on the diagonal. / 7 I MORTHO mat (R) , (C) size (r)x(c) weights (E) put in (R) , (C) trans mat (R) , (C) / / / This form of MORTHO is the same as the one above; except in the transformation $ = XA, the transformation matrix, A, is also stored in the worksheet. The matrix X is designated by the first four arguments, the weights by the 5th argument, the location of the orthornormal matrix, $, by the 6th and 7th arguments and the location of the transformation matrix, A, by the 8th and 9th (last two) arguments. The matrix A is upper triangular. Using the matrix X defined in the example above, the instruction MORTHO X in 1,1 size 7x4 wts in col 10, put orthonormal mat in 11,41 and trans in 21,41 would locate the transformation matrix, A, in the worksheet as shown reading, the matrix shown is actually 16. A. below. For ease Row/ Column 41 42 43 44 11 8.0 -6.0 -5.0 -17.0 12 0.0 4.0 -2.0 -10.0 13 0.0 0.0 4.0 -4.0 IT 0.0 0.0 0.0 16.0 See the description of the second form of MTRIANGULARIZE, below, for further remarks. A lower triangular matrix, T, is computed for the matrix, A, such that A = TT' . The triangularization is performed only for symmetric matrices of full rank with leading submatrices nonsingular. The matrix, A, to be triangularized is designated by the first four arguments. A should be square, so the 3rd and 4th arguments should be equal. The triangular matrix, T, is located in the worksheet as determined by the 5th and 6th (last two) arguments. The size of T is (r)x(r) and all the elements above the principal diagonal are equal to zero. Page 216 contains the results and a set of instructions to illustrate the use of both forms of the instruction MTRIANGULARIZE. The fatal error *** ILLEGAL *STATEMENT* will occur if any of the following three conditions exist: (1) r^c (2) Any leading submatrix is singular. (3) A is not symmetric, | |a. ./a. . | -l| >10" 6 . 215 OMNITAB EXAMPLE OF MTRIANGULARIZE THE FOLLOWING IS AN .EXAMPLE OF THE MTRIAN COMMAND. PAGE MATRIX A IS THE ORIGINAL MATRIX. ROW/COL 3 4 5 6 2 4.0000 6.0000 8.0000 10.0000 3 6.0000 25.0000 20.0000 27.0000 MATRIX T IS THE TRIANGULAR OF MATRIX A (T X ROW/COL 7 8 3 2.0000 .0000 4 3.0000 4.0000 5 4.0000 2.0000 6 5.0000 3.0000 MATRIX C IS THE INVERSE OF MATRIX T ROW/COL 11 12 3 .5000 .0000 4 -.3750 .2500 5 -.3125 -.1250 6 -1.0625 -.6250 4 5 8.0000 10.0000 20.0000 27.0000 36.0000 30.0000 30.0000 36.0000 T-TRANSPOSE = A) 9 10 .0000 .0000 .0000 .0000 4.0000 .0000 1.0000 1.0000 13 14 .0000 .0000 .0000 .0000 .2500 .0000 -.2500 1.0000 OMNITAB EXAMPLE OF MTRIANGULARIZE PAGE LIST OF COMMANDS, DATA AND DIAGNOSTICS 0.0 0.0 0.0 0.0 0.0 0.0 4.0 6.0 8.0 6.0 25.0 20.0 8.0 20.0 36.0 10.0 27.0 30.0 READ THE FOLLOWING DATA INTO COLUMNS 2***5 0.0 0.0 10.0 27.0 30.0 36.0 MTRIAN MATRIX IN R=3 C=2 SIZE=4X4 PUT TRIANGULAR IN R=3 C=7 TITLE1 THE FOLLOWING IS AN EXAMPLE OF THE MTRIAN COMMAND. NEW PAGE SPACE NOTE MATRIX A IS THE ORIGINAL MATRIX. FIXED 4 MPRINT MATRIX A IN R=3 C=2 SIZE=4X4 SPACE NOTE MATRIX T IS THE TRIANGULAR OF MATRIX A (T X T-TRANSPOSE = A) MPRINT MATRIX B IN R=3 C=7 SIZE=4X4 MTRIAN MATRIX IN 3,2 SIZE=4X4 PUT TRIANGULAR IN 3,7 INVERSE IN 3,11 SPACE NOTE MATRIX C IS THE INVERSE OF MATRIX T MPRINT MATRIX C IN R=3 C=ll SIZE=4X4 STOP 216 Formulas for performing the triangularization are described, starting on page 6-38, in "Experimental Statistics," Natrella, M. G. , National Bureau of Standards Handbook 91, U. S. Government Printing Office. / 7 I MTRIANGULARIZE matrix (R) , (C) size (r)x(c) in (R) , (C) inverse in (R) , (C) / / / This form of the instruction is the same as the one above; except the inverse of the triangular matrix is also computed. The inverse is put in the location in the worksheet determined by the 7th and 8th (last two) arguments. In order to invert a matrix, a large amount of scratch area (internal space) is needed for the computations. If (r) exceeds 77, or 2(r+2) 2 is greater than the size of the worksheet, the following fatal error occurs: *** INSUFFICIENT SCRATCH AREA An example of the use of this form of MTRIANGULARIZE is also shown on page 216. The matrix A in 3,2 is equal to the matrix X'WX, where the matrices X and W are defined under MORTHO on page 214. Hence, X'WX = TT\ W is a diagonal matrix with weights on the principal diagonal. The transpose of the matrix C, equal to T inverse, in 3,11 on page 216, is equal to the transpose of the transformation matrix, A, where 16. A is in 11,41 shown on page 215. Remark In a weighted least squares analysis, see section^4.S, estimates of $ are obtained for the model y = Xf3 + e. The estimates are computed from (3 = A$'Wy. The matrix A is the inverse of T transpose when MTRIANGULARIZE is applied to X'WX. The matrix A is also the transformation matrix computed when MORTHO is applied to the matrix X. The matrix $ can be obtained by applying MORTHO to the design matrix X. The Fourier coefficients, described in section 4.5, are given by $'Wy. It is instructive to verify the above statements using the commands FIT, MORTHO and MTRIANGULARIZE. This can be done using the measurements y = 13.0, 17.0, 18.2, 8.8, -3.0, 2.8 and 2.1 and the X matrix and weights given on page 214. 8.6 Properties . MPROPERTIES, SMPROPERTIES The instructions MPROPERTIES and SMPROPERTIES evaluate properties of the matrix specified by the first four arguments. If the matrix is square (e.g., r=c) , 31 different properties of the matrix will be computed, while 20 properties are computed if the matrix is not square. An MPROPERTIES instruction automatically prints the different properties of the designated matrix, whereas SMPROPERTIES stores results, but suppresses the automatic printing. The first 18 properties computed by MPROPERTIES are the same as those computed by APROPERTIES, described in section 7.4. There are six different forms of MPROPERTIES. The six forms differ only in the amount of information which is stored. The first form does not provide any storage. The remaining forms provide storage of results as follows: (2) properties, (3) column averages, (4) properties and column averages, (5) column averages and row averages, and (6) properties, column averages and row averages. The printing of the properties shows the row in which the property is stored, if storage is requested, the description of the property and the value of the property. The meaning of most of the descriptions should be clear, but some may require a word of explanation, which is given below. Items 1 through 18, 28 and 29 are always printed, for both square and non- square matrices. 217 Pages 219 and 220 show the automatic printing of MPROPERTIES for both a square matrix and a non-square matrix using the following set of instructions. (A few inconsequential changes were made in the actual computer printing in order to make it fit on a page.) OMNITAB- EXAMPLE OF MPROPERTIES READ 12 3 4 4 6 8 10 6 25 20 27 8 20 36 30 10 27 30 36 MPROPERTIES MATRIX IN 1,1 SIZE 4X4 STORE PROPERTIES IN 10 MPROPERTIES MATRIX IN 1,1 SIZE 3X4 STOP The trace of a matrix, item 1, is the sum of the numbers in the principal diagonal; that is the sum of the numbers in the diagonal starting with the number in the upper left-hand corner and moving down and to the right. The number of values used in the sum is printed in parentheses. Item 2, trace no. 2, is evaluated using the formula £, „£ (a. .a - a, .a ,), where n is the smaller of r and c. Trace no. 2 is the second elementary symmetric function of the eigenvalues and also the second coefficient in the characteristic polynomial. Item 14, the sum of squares about the mean, is the same as the (corrected) total sum of squares printed by the instruction TWOWAY, described in section 4.4. Items 15 and 16 are the within sums of squares and should not be confused with the between sums of squares printed by TWOWAY. ~ A square matrix is orthogonal if the matrix premultiplied by its transpose is equal to the identity matrix (e.g., A'A = I). For a complete discussion of matrices, see "Theory of Matrices," S. Perlis, Addison-Wesley (1952). MPROPERTIES also checks the orthogonality of non-square matrices by using the largest square matrix contained in the specified rectangular matrix. If r> c, the condition to be satisfied is A'A = I, otherwise, for r<c, the condition is AA' =1. In the automatic printing, item 28, the answer will be no, if the matrix is not orthogonal and yes, if the matrix is orthogonal. Enclosed in parentheses, after the answer, is the value stored (if storage is requested) in row 28. The value will be zero if the matrix is non- orthogonal, one if the matrix is exactly orthogonal (A'A (or AA') = I, exactly) and two if A'A = I within a tolerance. For the tolerance to be satisfied, each number in A'A must be zero or one plus or minus 1x10" '. For non-square matrices, the automatic printing will indicate row or column wise orthogonality. Item 29 is similar to item 28; except the product A'A (or AA') is examined to see if it is a diagonal matrix, rather than the identity matrix. For square matrices, items 19 through 27, 30 and 31 are also computed. The norms, items 21, 22 and 23, are error bounds on the inverse of the matrix. See the discussion of MINVERT in section 8.5 for further details. A matrix will be a normal matrix, item 24, if it is symmetric, item 25, skew symmetric, item 26, or diagonal, item 27. A matrix, A, is symmetric if A = A' . A skew symmetric matrix is one where A = -A' and all the principal diagonal elements equal zero. A matrix is diagonal, if all the off -diagonal elements equal zero (e.g., a.. =0, if i^j). The automatic printing will show YES if condition is true and NO if the condition is not true. The value inside the parentheses is the value stored, if storage has been requested. Zero indicates the condition has not been met, one indicates the condition has been met exactly and two indicates the condition is true within the tolerance 1x10" 7 . 218 OMNITAB EXAMPLE OF MPROPERTIES PAGE PROPERTIES OF COL 10 GENERAL R 1 TRACE ( 4 VALUES USED) 2 TRACE NO. 2 3 MAXIMUM ELEMENT 4 MINUMUM ELEMENT 5 MAXIMUM ELEMENT IN ABS VALUE 6 MINUMUM ELEMENT IN ABS VALUE 7 MIN NON-ZERO ELEM IN ABS VAL 8 NUMBER OF POSITIVE ELEMENTS 9 NUMBER OF ZERO ELEMENTS 10 NUMBER OF NEGATIVE ELEMENTS 11 SUM OF TERMS 12 AVERAGE 13 SUM OF SQUARES 14 SUM OF SQUARES ABOUT MEAN 15 WITHIN ROWS SUM OF SQUARES 16 WITHIN COLS SUM OF SQUARES 17 SUM OF ABSOLUTE VALUES 18 AVERAGE OF ABSOLUTE VALUES SPECIFIC 4 X 4 MATRIX STARTING LOCATION (1,1) 1.010000+02 1.255000+03 3.600000+01 4.000000+00 3.600000+01 4.000000+00 4.000000+00 16 3.030000+02 1.893750+01 7.691000+03 1.952937+03 1.112750+03 1.112750+03 3.030000+02 1.893750+01 19 DETERMINANT 20 RANK NORMS 21 SQ ROOT OF SUM OF B(I,J)**2 22 N*MAX(B(I,J)) 23 MAX VAL OF ROW SUM 24 NORMALITY 25 SYMMETRY 26 SKEW SYMMETRY 27 DIAGONALITY 28 ORTHOGONALITY 29 A'A=DIAGONAL MATRIX 1.024000+03 4 2.7-06 1.2-05 2.5-06 YES*(1) YES*(1) NO* (0) NO* (0) NO*(0) NO*(0) 30 TRIANGULAR 31 STOCHASTIC (R AND/OR C SUMS=1) NO** (0) NO***(0) * IF ANSWER IS YES, (R,C)=1 OR 2. (1, IF EXACT; 2, IF TOLERANCE IS SATISFIED.) IF ANSWER IS NO, (R,C)=0. 219 OMNITAB EXAMPLE OF MPROPERTIES PAGE GENERAL PROPERTIES OF 3 X 4 MATRIX STARTING LOCATION (1,1) 1 TRACE ( 3 VALUES USED) 2 TRACE NO. 2 3 MAXIMUM ELEMENT 4 MINUMUM ELEMENT 5 MAXIMUM ELEMENT IN ABS VALUE 6 MINUMUM ELEMENT IN ABS VALUE 7 MIN NON-ZERO ELEM IN ABS VAL 8 NUMBER OF POSITIVE ELEMENTS 9 NUMBER OF ZERO ELEMENTS 10 NUMBER OF NEGATIVE ELBffiNTS 6.500000+01 6.440000+02 3.600000+01 4.000000+00 3.600000+01 4.000000+00 4.000000+00 12 11 SUM OF TERMS 2.000000+02 12 AVERAGE 1.666667+01 13 SUM OF SQUARES 4.666000+03 14 SUM OF SQUARES ABOUT MEAN 1.332667+03 15 WITHIN ROWS SUM OF SQUARES 7.400000+02 16 WITHIN COLS SUM OF SQUARES 8.293333+02 17 SUM OF ABSOLUTE VALUES 2.000000+02 18 AVERAGE OF ABSOLUTE VALUES 1.666667+01 SPECIFIC 28 ORTHOGONALITY 29 A'A=DIAGONAL MATRIX NO* (0) NO* (0) (R,C)=0, IF MATRIX IS NOT ORTHOGONAL; (R,C)=1 OR 2 IF MATRIX IS ORTHOGONAL ROW WISE; (R,C)=3 OR 4, IF MATRIX IS ORTHOGONAL COL WISE. ((R,C)=I, IF 1=1,3 ORTHOGONALITY EXACT; FOR 1=2 OR 4 RELATIVE WITHIN ERROR BOUND OF .IE- 6) 220 A matrix is triangular, item 30, if all the elements below (or above) the principal exactly equal to zero. Enclosed in the parentheses is the value stored (if storage has been requested) in row 30. The value will be zero, one, two or three depending upon whether the matrix is not triangular, lower triangular (values above diagonal equal zero) , upper triangular (values below diagonal equal zero) or all off-diagonal elements equal zero. A matrix is defined to be stochastic, item 31, if all its elements are non-negative and all the row (or column) sums are one. The value in parentheses is zero, one, two or three depending upon whether the matrix is non-stochastic, all rows sum to unity, all columns sum to unity or both all row and columns sums are unity, respectively. For a description of stochastic matrices, see "The Theory of Stochastic Processes," Cox, D. R. and Miller, H. D., John Wiley and Sons, Inc. (1965). If the worksheet has been redimensioned and the number of rows is less than that needed to store all the properties of a matrix, then only as many properties will be stored as is possible. MPROPERTIES of the matrix in (R) , (C) of size (r)x(c) This form of the instruction prints the 31 properties for a square matrix, or 20 properties for a non-square matrix, but provides no storage of results. I ' ' ' 7 I MPROPERTIES of matrix (R) , (C) size (r)x(c) put properties in col (C) / / , / The properties of the matrix are printed and also put in the column designated by the 5th (last) argument. / " r ~" " 7 I MPROPERTIES of (R) , (C) size (r)x(c) put row of column averages in (R),(C) / / ___ __ . / The (c) column averages are put in the row designated by the last pair of arguments. If the instruction MPROPERTIES of matrix in 1,1 size 3x4, put row of column averages in 1,21 had been used in the set of instructions on page 218, then the numbers 6.0000000, 17.000000, 21.333333 and 22.333333 would have been put in row 1 of columns 21, 22, 23 and 24. / ' 7 I MPROPERTIES of (R) , (C) size (r)x(c) put prop's in (C) col ave's in (R) , (C) / / , / Same as the above form, but the properties are also stored in the worksheet. The properties of the matrix are put in the column designated by the 5th argument. The location of the row of column averages is determined by the 6th and 7th (last two) arguments. r~ ■ " ' ' 7 I MPROPERTIES of (R) , (C) size (r)x(c) put col ave's (R),(C) row ave's (R) , (C) / / , / This form of the instruction stores both the row and column averages of the matrix. The column averages are put in the row indicated by the 3rd pair of arguments . The row averages are put in the column indicated by the 4th (last) pair of arguments. If the instruction MPROPERTIES matrix in 1,1 size 3x4 put col ave's in 1,21 and row ave's in 1,31 221 had been used in the set of instructions on page 218, then the numbers 7.0, 19.5 and 23.5 would have been put in the first three rows of column 31. The instruction MPROPERTIES matrix in 1,1 size 3x4, put averages in 4,1 and 1,5 would border the original 3x4 matrix with row and column averages to form a 4x5 matrix. / 7 I MPROPERTIES of (R) , (C) size (r)x(c) put in (C) ave's in (R) , (C) and (R) , (C) / / / Same as the above form, but the properties are also stored in the worksheet. The properties are put in the column designated by the 5th argument. The location in the worksheet of the row of column averages is determined by the 6th and 7th arguments. The location of the column" of row averages is determined by the 8th and 9th (last two) arguments . All forms of the instruction, except the first, have an additional form which has the letter S at the beginning of the command. The letter S indicates that the automatic printing of the properties is to be suppressed and only the requested results are stored. These forms are listed below, but they are not described. If an attempt is made to put the letter S at the beginning of the command in the first form, above, the instruction will be ignored and the following informative diagnostic will be given: * COMMAND IGNORED - S BEFORE COMMAND NAME MEANINGLESS IF NO STORAGE REQUESTED SMPROPERTIES of matrix (R) , (C) size (r)x(c) put properties in col (C) /— ^ T / SMPROPERTIES of (R) , (C) size (r)x(c) put row of column averages in (R) , (C) / / I I 7 I SMPROPERTIES of (R) , (C) size (r)x(c) put prop's in (C) col ave's in (R) , (C) / / _/ / ■ —^ I SMPROPERTIES of (R) , (C) size (r)x(c) put col ave'ss (R) , (C) row ave's (R) , (C) / / _/ / / / SMPROPERTIES of (R) , (C) size (r)x(c) put in (C) ave's in (R) , (C) and (R) , (C) / / / >.7 Printing. MPRINT, MPRINT "L" These two instructions are listed here for completeness, but they are described in section 1.8. MPRINT the matrix in (R) , (C) of size (r)x(c) 222 MPRINT "L" format, the matrix in (R) , (C) of size (r)x(c) 223 9. BESSEL FUNCTIONS . This section describes 34 instructions which may be used to evaluate Bessel functions. Included are: Bessel functions and modified Bessel functions of order zero, one and n (integer) for both real and complex argument. Also included, are instructions for computing zeros of Bessel functions and a definite integral. 9.1 First and Second Functions of Order Zero and One . BJONE, BJZERO, BYONE, BYZERO. All the Bessel functions of order zero and one are evaluated using standard series and asymptotic expansions, and the calculations are performed in double precision arithmetic but stored as single precision. J (x) = (l/Tr)/ 17 cos[xsin(t)-nt]dt, Y (x) = (l/O/^sinfxsinOO-ntldt, for n = and 1. See Abramowitz, M. , and Stegun, I. A., "Handbook of Mathematical Functions", AMS 55, chapter 9. BJONE of (E) put results in column (C) BJONE evaluates the Bessel function of the first kind of first order, J] (x). BJZERO of (E) and put results in column (C) BJZERO evaluates the Bessel function of the first kind of zero order, Ji (x). BYONE of (E) and put results in column (C) BYONE evaluates the Bessel function of the second kind of first order, Yi(x). Whenever x=0.0, the result will be set equal to zero and the following arithmetic diagnostic is given: ** NEGATIVE ARGUMENT TO SORT, LOG, OR RAISE BYZERO of (E) and put results in column (C) BYZERO evaluates the Bessel function of the second kind of zero order Y (x). If x=0.0, the result is set equal to zero and the following arithmetic diagnostic is given: ** NEGATIVE ARGUMENT TO SORT, LOG, OR RAISE 224 9.2 Modified Functions . BIONE, BIZERO, BKONE, BKZERO. These instructions evaluate the following modified Bessel functions: I (x) = (l/ir)/ 1T exp[xcos(t)]cos(nt)dt K (x) = csc(mr/2)/ c °sin[xsinh(t)]sinh(nt)dt, for n = and 1. The results of the modified Bessel functions will be scaled for arguments whose absolute values are equal to or greater than K = 88.0 (for the National Bureau of Standards computer), since that is the largest value of exp(K) that can be evaluated in single precision floating point arithmetic without overflow. The scaling factor used is exp(K). Whenever scaling does occur, the following arithmetic diagnostic will be given: ** BESSEL ARGUMENTS SCALED TO AVOID OVER/UNDER FLOW. RETURNED (n) TIMES BIONE of (E) and put results in column (C) BIONE evaluates the modified Bessel function of the first kind of first order, Ii(x). The result will be set equal to exp(-x)Ii (x) , for the absolute value of x equal or greater than K. If column 38 contains the values 1.0, 2.5 and 5.0, then the instruction BIONE of x in col 38 and put Ii(x) in col 2 will put the following values in column 2: Row/ Column 2_ 1 .56515910 I 2.5167162 3 24.335642 BIZERO of (E) and put results in column (C) BIZERO evaluates the modified Bessel function of the first kind of zero order, Io(x). For |x| > K, Io(x) will be multiplied by exp(-x) so that the result will stay within the bounds of the computer capability. BKONE of (E) and put results in column (C) BKONE evaluates the modified Bessel function of the second kind of first order, Ki (x) . The result will be scaled by exp(x), if |x| ^ K. If x=0.0, the result is set equal to zero and the following arithmetic diagnostic is given: ** NEGATIVE ARGUMENT TO SQRT, LOG, OR RAISE BKZERO of (E) and put results in column (C) 225 BKZERO evaluates the modified Bessel function of the second kind of zero order, Ko (x) , and the results will be multiplied by exp(x), if |x| ^ K. If x=0.0, the result is set equal to zero and the following arithmetic diagnostic is given: ** NEGATIVE ARGUMENT TO SQRT, LOG, OR RAISE 9.3 Modified Functions with Extreme Valued Argument . EXIONE, EXIZERO, EXKONE, EXKZERO The formulas for evaluating these functions are the same as those in section 9.2; except the scale factor, exp(x), is part of the formulas and is not optional. EXIONE of (E) and put results in column (C) EXIONE evaluates the modified Bessel function of the first kind of first order. Assuming column 38 contains the numbers 1.0, 2.5 and 5.0, the instruction EXIONE of x in col 38 and put exp(-x)Ii(x) in col 3 will put the following numbers in column 3: Row/Column 3 1 .20791041 2 .20658465 3 .16397227 Note , if the numbers in column 2 of the example of BIONE are multiplied by exp(-x), the results will equal those in column 3 in the above example. EXIZERO of (E) and put results in column (C) EXIZERO evaluates the modified Bessel function of the first kind of zero order, exp(-x)I (x). EXKONE of (E) and put results in column (C) EXKONE evaluates the modified Bessel function of the second kind of first order, exp(x)Ki(x). The result is set equal to zero for x=0.0, and the following arithmetic diagnostic is given; ** NEGATIVE ARGUMENT TO SQRT, LOG, OR RAISE EXKZERO of (E) and put results in column (C) EXKZERO evaluates the modified Bessel function of the second kind of zero order, exp(x)K (x). If x=0.0, the result is set equal to zero and the following arithmetic diagnostic is given: 226 ** NEGATIVE ARGUMENT TO SQRT, LOG, OR RAISE 9.4 Complex Functions; Angle=7r/4 (Kelvin Functions) . KBIONE, KBIZERO, KBKONE, KBKZERO The Bessel functions of complex argument, Rexp(i-rr/4) , computed for the above commands are related to the Kelvin functions as follows: I (Re i7r/4 ) = ber(R) + i bei(R) K Q (Re i7r/4 ) = ker(R) + i kei(R) I (Re iir/4 ;) = bei (R) - i ber (R) K^Re" 74 ) = kei 1 (R) + i ker (R) The results will be scaled if the absolute value of R//2 is equal to or greater than K = 88.0 (for NBS computer), and the following arithmetic diagnostic will be given: ** BESSEL ARGUMENTS SCALED TO AVOID OVER/UNDER FLOW. RETURNED (n) TIMES KBIONE of R=(E) put real part in column (C) and imaginary part in column (C) KBIONE evaluates the Bessel function of complex arguments of order one Ii (Rexp(iir/4)) . The results will be scaled by the factor exp(-R//2), if necessary. If NRMAX is equal to 3, then the instruction KBIONE of R = 3.0 put real part in col 7, imaginary part in col 8 will put the number -.48745418 in rows one, two and three of column 7 and the number 1.7326442 in column 8. KBIZERO of R=(E) put real part in column (C) and imaginary part in column (C) KBIZERO evaluates the Bessel function of complex arguments of order zero, I (Rexp(iir/4)). The results will be scaled by the factor exp(-R/V2) , if necessary. KBKONE of R=(E) put real part in column (C) and imaginary part in column (C) KBKONE evaluates the Bessel function of complex arguments of order one, for Ki(Rexp(iiT/4)). Whenever necessary, the scale factor used is exp(R//2). KBKZERO of R=(E) put real part in column (C) and imaginary part in column (C) 227 KBKZERO evaluates the Bessel function of complex arguments of order zero, for K '(Rexp(iTr/4)). Whenever necessary, the scale factor used is exp(R//2). 9.5 Complex Functions with Extreme Valued Real Argument (Kelvin Functions) . KEXIONE, KEXIZERO, KEXKONE, KEXKZERO These instructions are similar to the instructions in section 9.4. They evaluate the same Bessel functions of complex argument; except the values are scaled before the results are put in the designated columns. KEXIONE of R=(E) put real part in column (C) and imaginary part in column (C) KEXIONE evaluates the Bessel function of complex argumeuts of order one with a scale factor, exp(-R//2)I 1 (Rexp(iir/4)). KEXIZERO of R=(E) put real part in column (C) and imaginary part in column (C) KEXIZERO evaluates the Bessel function of complex arguments of order zero with a scale factor, exp(-R//2)I (Rexp(iTr/4)). KEXKONE of R=(E) put real part in column (C) and imaginary part in column (C) KEXKONE evaluates the Bessel function of complex arguments of order one with a scale factor, exp(R//2)K 1 (Rexp(iir/4)). If R is less than or equal to zero, the following arithmetic diagnostic is given: ** NEGATIVE ARGUMENT TO SQRT, LOG, OR RAISE KEXKZERO of R=(E) put real part in column (C) and imaginary part in column (C) KEXKZERO evaluates the Bessel function of complex arguments of order zero with a scale factor, exp(R//2)K (Rexp(iTr/4)) . If R is less than or equal to zero, the following arithmetic diagnostic is given: ** NEGATIVE ARGUMENT TO SQRT, LOG, OR RAISE 9.6 Complex Functions with Arbitrary Angle, 0<A<Tr/2 . CIONE, CIZERO, CKONE, CKZERO These instructions are similar to the instructions in section 9.4. Whereas in section 9.4 the angle is assumed to be tt/4, these instructions permit the user to specify the angle in radians. The angle or angles designated must be equal to or greater than zero and less than or equal to it/ 2. The results will be scaled, if the absolute value of Rcos(A) is greater than or equal to K = 88.0 (for NBS computer), and the following arithmetic diagnostic will be given: ** BESSEL ARGUMENTS SCALED TO AVOID OVER/UNDER FLOW. RETURNED (n) TIMES 228 CIONE of R=(E), A=(E) put real part in column (C) and imaginary part in col (C) CIONE evaluates the Bessel function of complex arguments of order one, Ii (Rexp(iA)), where the angle A is in radians. If necessary the result will be scaled by the factor exp(-Rcos A). If column 54 contains the values 2, 4, 6 and 8, the instruction CIONE of R in col 54, angle=. 523598775, put real part in col 2, imaginary in col 3 will place the following results in columns 2 and 3: Real Part Imaginary Row/ Column 2 3 1 .78785283 1.0378416 1 -1.3246755 5.7005536 3 -25.943990 9.9659038 ? -112.10820 -80.535762 Note , the angle in this example (.523598775 radians) is 30 degrees. CIZERO of R=(E), A=(E) put real part in col (C) and imaginary part in col (C) CIZERO evaluates the Bessel function of complex arguments of order zero, I (Rexp(iA)) , and the scale factor used is exp(-Rcos A), if necessary. CKONE of R=(E), A=(E) put real part in column (C) and imaginary part in col (C) CKONE evaluates the Bessel function of complex arguments of order one, Ki (Rexp(iA)) , and the scale factor exp(Rcos A) is used, if necessary. CKZERO of R=(E), A=(E) put real part in col (C) and imaginary part in col (C) CKZERO evaluates the Bessel function of complex arguments of order zero, K (Rexp(iA)) , and the scale factor exp(Rcos A) is used, if necessary. 9.7 Complex Functions with Extreme Real Argument . CEIONE, CEIZERO, CEKONE, CEKZERO These commands are the same as those in 9.6; except each of the functions is always multiplied by a scale factor. CEIONE of R=(E), A=(E) put real part in col (C) and imaginary part in col (C) CEIONE evaluates the Bessel function of complex arguments of order one with a scale factor, exp(-Rcos A)Ii (Rexp(iA)). 229 CEIZERO of R=(E), A=(E) put real part in col (C) and imaginary part in col (C) CEIZERO evaluates the Bessel function of complex arguments of order zero with a scale factor, exp(-Rcos A)I (Rexp(iA)) . CEKONE of R=(E), A=(E) put real part in col (C) and imaginary part in col (C) CEKONE evaluates the Bessel function of complex arguments of order one with a scale factor, exp(Rcos A)Ki (Rexp(iA)) , and if R is less than or equal to zero, the following arithmetic diagnostic is given: ** NEGATIVE ARGUMENT TO SQRT, LOG, OR RAISE CEKZERO of R=(E), A=(E) put real part in col (C) and imaginary part in col [C) CEKZERO evaluates the Bessel function of complex arguments of order zero with a scale factor, exp(Rcos A)K (Rexp(iA)) , and if R is less than or equal to zero, the following arithmetic diagnostic is given: ** NEGATIVE ARGUMENT TO SQRT, LOG, OR RAISE 9.8 Zeros of Bessel Functions . ZEROS BJONE, ZEROS BJZERO If NRMAX is greater than 1000, only the first 1000 positive roots are computed. ZEROS BJONE put x in col (C) and J (x) in col (C) ZEROS BJONE computes the positive roots for the Bessel function Ji(x )=0, s=l,2,...,NRMAX and the values of J (x ). For NRMAX=2, the instruction ZEROS BJONE put x in col 17 and J (x ) in col 24 will give the following results in columns 17 and 24; x s J (x s ) s Row/ column 17 24 1 1 3.831706 -.4027594 2 1 7.0155866 .30011575 ZEROS BJZERO put x in col (C) and Jj (x) in col (C) 230 ZEROS BJZERO computes the positive roots for the Bessel function Jo(x )=0, s= 1,2,..., NRMAX and the values of J! (x ). The instruction s ZEROS BJZERO put x in col 1 and Ji(x ) in col 2 for NRMAX=2, will produce the following results: x Ji(x ) s Row/Column 1 2 2.4048256 5.200781 .51914749 -.34026480 9.9 Bessel Fuctions of Order n. BESIN, BESJN, BESKN These commands compute the integral orders of the Bessel functions of first and second kind for n=0,l,... ,NRMAX. If NRMAX is greater than 99, only the first 100 values are computed. The first argument of these commands must be a constant with a decimal point. If the constant is too large or too small, the result is set equal to zero and the following informative diagnostic is given: * ARG FOR BESIN, BESJN, BESKN GIVES A RESULT TOO LARGE/SMALL. COMMAND NOT EXECUTED BESIN of x=(K) and put results in column (C) BESIN computes I (x) for order n=0,l, . . . , NRMAX. For NRMAX=3, the instruction BESIN for x=5.0 put results in column 4 will put the following values in column 4: Row/Column 4 1 1(5) I 2 (5) .17759677 -.32757914 .046565116 BESJN of x=(K) put in column (C) : BESJN computes J (x) for order n=0,l,. ., NRMAX. BESKN. of x=(K) put in column (C) : BESKN computes K (x) for order n=0,l, . . . , NRMAX. 231 9.10 Integral . INTJO INTJO of x=(E) put in column (C) INTJO evaluates the definite integral of the Bessel function of order zero: f(x) = /*J (t)dt. 232 10. THERMODYNAMICS . This section contains 11 instructions which are useful for thermodynamic calculations. The instructions in section 10.1 have more general use. 10.1 Temperature Scale Conversion . CTOF, FTOC The two instructions in this section enable one to convert temperature from degrees Celsius (centigrade) to degrees Fahrenheit and to convert from degrees Fahrenheit to degrees Celsius, respectively. Whenever degrees in Celsius is less than -273.15 (less than Kelvin zero), the following informative diagnostic is given: * NEGATIVE ABSOLUTE TEMPERATURES CONVERTED CTOF for Celsius (E) put Fahrenheit equivalent in column (C) The instruction converts degrees Fahrenheit to degrees Celsius using the relation °F = 32.0 + 1.8°C FTOC Fahrenheit is (E) and put Celsius equivalent in column .(C) The instruction converts degrees Celsius to degrees Fahrenheit using the relation °C = -32.0 + °F/1.8 10.2 Systems Of Units . CGS, SI Values of the fundamental physical constants are given and discussed in section B1.14. The fundamental physical constants (except ir and e) listed in the table in section B1.14 are in the OMNITAB II system to the full significance given in Abramowitz, M. and Stegun, I. A., Handbook of Mathematical Functions, National Bureau of Standards, AMS 55. The physical constants may be referenced in either centimeter-gram-second (CGS) units or in the Systeme International (SI) units. If the system of units is not specified, then SI units will be used. CGS system of fundamental physical constants, centimeter-gram-second After this instruction is executed, the fundamental physical constants will be in the centimeter-gram-second units. In the sample CGS system DEFINE *CTW0* into column 5 the value entered into all rows of column 5 is 1.43879. 233 This instruction resets the units of the fundamental physical constants in the SI system, or Systeme International d 'Unites. 10.5 Molecular Weight . ATOMIC, MOLWT The atomic weights of the elements from atomic number 1, hydrogen, to atomic number 103, Lawrencium, will be put in the specified column. If the number of rows in the worksheet is less than 103, only enough values will be stored to fill the column and the following informative diagnostic will be given: * COLUMN NOT LONG ENOUGH TO STORE ALL ELEMENTS. ONLY NROW WILL BE STORED If NRMAX is less than 103 or the number of rows in the worksheet, NRMAX will be reset to the number of atomic weights stored. The values for the atomic weights were obtained from Comptes Rendus XXV Conference, International Union of Pure and Applied Chemistry, 1970. MOLWT evaluates the molecular weight of compounds. The last argument of the instruction specifies the column number where the molecular weight of the compound is to be put. All the rows through NRMAX will contain the same value. The other arguments are integers and are used as pairs. Therefore, this instruction always has an odd number of arguments. The first constant in each pair specifies the atomic number of the element and the second argument indicates what multiplying factor is to be used. If one wants to evaluate the molecular weight of water (2 parts hydrogen, 1 part oxygen) the instruction to use is MOLWT 1 atomic no. hydrogen 2 parts, 8 at. no. oxygen 1 part put in col 31 If NRMAX=4, then column 31 contains 18.0154, 18.0154, 18.0154 and 18.0154. 10.4 Properties Of State . BOLDISTRIBUTION, EINSTEIN, PARTFUNCTION, PFATOMIC, PFTRANSLATIONAL These instructions calculate and store thermodynamic tables of properties of state.. Temperatures are specified in Kelvin degrees. The last argument of each instruction specifies the starting storage location of the table computed. If there are not enough columns in the worksheet to store the table, the following fatal error occurs: *** COLUMN NUMBER TOO BIG OR LESS THAN 1 Negative temperatures and wave numbers are not permitted and cause the following fatal error : *** ILLEGAL ARGUMENT ON CARD 234 BOLDISTRIBUTION for temp (E) , wave nos in (C) , degens (C) , put table in (C) on This instruction (Bolzmann distribution) produces a table giving the fraction of molecules in each of the n energy levels, having the specified wave numbers, at the given temperatures, using the formula g . exp (-hcE./kT) /I a . =J _g . exp (-hcE . /kT) to find the fractional population of the ith energy level. The ordered pairs of energy levels and degeneracies are read from parallel columns indicated as the second and third arguments of the instruction. These columns are read down to the last nonzero degeneracy to obtain n pairs. Note, this may be above or below NRMAX. The table generated has NRMAX rows and n columns. If fewer than n columns lie to the right of the column in which the table begins, the following fatal error occurs: *** DEFINED MATRIX OVERFLOWS WORKSHEET If only one nonzero degeneracy is given, ones will be vectorized to NRMAX, indicating that all molecules are in the given energy level. Negative Kelvin temperatures or degeneracies in the worksheet will result in an informative diagnostic. (If a negative Kelvin temperature is entered in the instruction, the fatal error *** ILLEGAL ARGUMENT ON CARD occurs.) If no nonzero degeneracies are found in the specified column, a fatal error occurs. EINSTEIN of temperatures (E) , wave numbers (E) , put table in (C) and succ. cols EINSTEIN evaluates the contributions to the thermodynamic properties of a harmonic oscillator in one degree of freedom for desired temperatures designated by the first argument and the vibrational frequencies defined in wave numbers by the second argument. The information is stored as a 7 column table starting with the column designated by the third argument through the succeeding six columns C+l, C+2, ..., C+6 as follows: Column Function C E - wave numbers specified by second argument C+l T - temperatures specified by first argument C+2 -(F°-ES)/RT = -ln(l-e~ x ) C+3 (H°-ES)/RT = xe" x /(l-e" x ) C+4 S°/R = -(F°-ES)/RT + (H°-ES)/RT C+S C°/R = x 2 e~ x /(l-e~ x ) 2 C+6 (H°-ES)/R, where x = hcE/kT and hc/k = 1.43879. If NRMAX=2 and column 1 had the values 1.25 and 1.50, then the instruction EINSTEIN 1.43879, column 2 put in column 13 would put the following table in the worksheet in rows 1 and 2 of columns 13 through 19: 235 Row/Col 13 14 15 16 17 18 19 1 1.25 1.43879 .33757957 .50193889 .83951846 .87936628 .72218466 2 1.50 1.43879 .25248246 .43082537 .68330783 .83184856 .61986723 / J I EINSTEIN temps (E) , wave nos (E) , R=(K), put table in (C) and succ. cols / / / This instruction is similar to the preceding one. Each of the stored thermal functions, with the exception of temperatures and wave numbers, is multiplied by R, the third argument in the instruction. PARTFUNCTION temp is (E) , wave nos in (C) , degens in (C) , put table in (C) on Evaluates the following three equations and stores them as a table: Q° = [" =1 g.exp(-hcE./kT) Q 1 = ^ =1 g i aicE 1 /kT)exp(-hcE i /kT) Q 2 = I^g^hcE./kT^expC-hcE./kT), where hc/k = 1.43879, E. is the wave number of the ith energy level, g. are the degeneracies (weights) of the energy levels and n' is the number of energy levels with non- zero degeneracies. If column 2 contains 78, 15868 and 33792 and column 3 contains 9, 5 and 1, then the instruction PARTFUNCTION 3000. col 2, col 3, put in column 11 would put the numbers 8.0445831, .9028034 and .10131854 into row 1 of columns 11, 12 and 13 (NRMAX = 1). PFATOMIC temp is (E) mol wt . (E) wave nos in (C) degens (C) , put table in (C) on PFATOMIC evaluates a table of the contributions to the following thermal functions and stores them in six consecutive columns starting with the column specified by the last argument . Column Function C T - temperatures C+l -(F°-ES)/RT = 2.5xln(T) + 1.5xln(M) -3.66495 + ln(Q°) C+2 (H°-E§)/RT = 2.5 + Q7Q C+3 S°/R = (H°-E?)/RT - (F°-ES)/RT C+4 C°/R = 2.5 + (Q7Q ) - (QVQ ) 2 C+5 (H°-Eg)/R, where R = 1.98717 and Q° , Q 1 and Q 2 are the formulas listed under PARTFUNCTION, above. Assume columns 2 and 3 contain the values given under PARTFUNCTION, then the instruction PFATOMIC temp 3000. mol wt 31.9988 wave nos 2, G = col 3 put in col 41 would put the numbers 3000.0, 21.549516, 2.5, 24.049516, 2.5 and 7500.0 into row 1 of columns 41 to 46. 236 A table of the translational contributions to the thermal functions is computed and stored in six consecutive columns starting with the column specified by the last argument. The contents of the six columns are as follows: Column Function C T - temperatures C+l -(F°-ES)/RT = 2.5xln(T) + l.Sxln(M) -3.66495 C+2 (H°-ES)/RT = 2.5 C+3 (H°-ES)/RT - (F°-Eg)/RT C+4 C°/R =2.5 C+5 (H°-Eg)/R 237 11. INDEX TO COMMANDS DESCRIBED IN PART C. Page number shown is the page on which the first form of the instruction appears. Abbreviations and synonyms are not listed. AADD 187 BOLDISTRIBUTION 235 ERROR 167 AAVERAGE 193 BYONE 224 EXCHANGE 100 ABRIDGE 61 BYZERO 224 EXIONE 226 ABRIDGE "L" 74 CADD 95 EXIZERO 226 ABSOLUTE 81 CDIVIDE 95 EXKONE 226 ACCURACY 89 CEIONE 229 EXKZERO 226 ACOALESCE 194 CEIZERO 230 EXPAND 92 ACOS 84 CEKDNE 230 EXPONENTIAL 83 ACOSD 84 CEKZERO 230 F PROBABILITY 163 ACOSH 84 CENSOR 102 FINISH 180 ACOT 84 CERF 166 FIT 152 ACOTD 84 CGS 233 FIXED 61 ACOTH 84 CHANGE 81 FLEXIBLE 61 ADD 80 CIONE 229 FLIP 103 ADEFINE 191 CI ZERO 229 FLOATING 61 ADIVIDE 188 CKONE 229 FORMAT "L" 74 AERASE 192 CKZERO 229 FRACTIONAL 89 MOVE 192 CLOSE UP 103 FREQUENCY 111 AMULTIPLY 189 CMULTIPLY 96 FTOC 233 ANTILOG 82 COMPARE 183 GAUSS QUADRATURE 179 APRINT 75 CORRELATION 162 GENERATE 59 APRINT "L" 76 COS 85 HARMONIC 175 APROPERTIES 196 COSD 85 HEAD 63 ARAISE 189 COSH 85 HERMITE 168 AS IN 85 COT 85 HIERARCHY 105 ASIND 85 COTD 86 HISTOGRAM 113 ASINH 85 COTH 86 IFEQ 183 ASUBTRACT 190 COUNT 97 IFGE 184 ATAN 85 CPOLAR 96 IFGT 184 ATAND 85 CREAD TAPE "L" 78 IFLE 184 ATANH 85 CRECTANGULAR 96 IFLT 185 ATOMIC 234 CSET TAPE "L" 78 IFNE 184 ATRANSPOSE 192 CSUBTRACT 96 INCREMENT 181 AVERAGE ' 94 CTOF 233 INSERT 103 BACKSPACE TAPE "L" 77 DEFINE 97 INTEGER 90 BEGIN 180 DEMOTE 99 INTERPOLATE 176 BESIN 231 DIMENSION 56 INTJO 232 BESJN 231 DIVIDE 80 ISETUP 172 BESKN 231 DUMMY "L" 56 ISOLATE 172 BIONE 225 DUPLICATE 100 ITERATE 175 BIZERO 225 EINSTEIN 235 KBIONE 227 BJONE 224 ELLIPTICAL FIRST 166 KBIZERO 227 BJZERO 224 ELLIPTICAL SECOND 166 KBKONE 227 BKONE 225 ENDFILE TAPE "L" 78 KBKZERO 227 BKZERO 225 ERASE 98 KEXIONE 228 238 KEXIZERO 228 NEW PAGE 64 SEARCH 107 KEXKONE 228 NHISTOGRAM 113 SELECT 108 KEXKZERO 228 NO LIST 57 SEPARATE 104 LAGUERRE 169 NORMLAGUERRE 169 SET 60 LEGENDRE 169 NOTE 64 SET TAPE "L" 79 LIST (n) 56 NOTE1 64 SFIT 154 LOGE 83 NOTE2 64 SHORTEN 104 LOGTEN 83 NPRINT 62 SI 234 M(AD) 207 NPRINT "L" 74 SIN 86 M(AV) 207 NULL 57 SIND 86 M(DA) 208 OMNITAB 57 SINH 86 M(V'A) 208 ONEWAY 124 SKIP TAPE "L" 79 M(X'AX) 209 ORDER 105 SMPROPERTIES 222 M(X'X) 209 PAGE PLOT 66 SOLVE 178 M(XAX') 210 PARPRODUCT 93 SONEWAY 127 M(XX') 209 PARSUM 90 SORT 106 MADD 203 PARTFUNCTION 236 SPACE 65 IvIATCH 107 PERFORM 181 SPOLYFIT 154 MAXIMUM 94 PFATOMIC 236 SQRT 82 MAXMIN 177 PFTRANSLATIONAL 237 SQUARE 82 MDEFINE 199 PLOT 67 SSTATISTICAL 121 MDIAGONAL 199 POLYFIT 153 STATISTICAL 121 MEIGEN 211 PRINT 62 STOP 58 MERASE 200 PRINT "L" 75 STRUVE ONE 167 MIDENTITY 200 PRINT NOTE 64 STRUVE ZERO 168 MINIMUM 94 PRODUCT 93 STWOWAY 138 MINVERT 212 PROMOTE 101 SUBTRACT 81 MKRONECKER 204 PUNCH 76 SUM 91 MMATVEC 200 PUNCH "L" 76 TAN 86 MMOVE 201 RAISE 80 TAND 86 MMULTIPLY 204 RANKS 115 TANH 86 MOLWI 234 READ 59 TCHEBYSHEV 170 MORTHO 214 READ "L" 75 TITLEX 70 MOVE 101 READ TAPE "L" 78 TITLEY 70 MPRINT 76 READ TAPE "L","L" 78 TITLE1 65 MPRINT "L" 76 RESET 98 TITLE2 65 MPROPERTIES 221 RESET 'V" 99 TITLE3 65 MRAISE 205 RESTORE 182 TITLE4 65 MSCALAR 205 REWIND TAPE "L" 78 TWOWAY 131 MSUBTRACT 206 RMS 94 UCHEBYSHEV 170 ivlTRANSPOSE 201 ROUND 90 UNIFORM RANDOM 163 MTRIANGULARIZE 215 ROW SUM 90 WRITE TAPE "L" 79 MULTIPLY 80 SAPROPERTIES 196 WRITE TAPE "L","L' 79 MVECDIAGONAL 202 SCAN 58 ZEROS BJONE 230 MVECMAT 202 SCORRELATION 163 ZEROS BJZERO 230 NEGEXPONENTIAL 83 239 PART D LIST OF INSTRUCTIONS 241 LIST OF INSTRUCTIONS NATIONAL BUREAU OF STANDARDS OMNITAB II - VERSION 5.0 - May 15, 1970 1. Instructions are listed alphabetically; except all the array operation instructions are listed separately after the A's and all the matrix operation instructions are listed separately after the M's. All array operation instructions begin with the letter A and all the matrix operation instructions begin with the letter M. The exception is the letter S, which is used in SAPROP and SMPROP to indicate suppression of automatic printing. All forms of an instruction, synonyms and abbreviations are listed. 2. The command name is given in capital letters. Non-essential, descriptive words which clarify the meaning of an instruction are printed in lower case letters. The dollar sign, $, precedes additional comments and information. No numerals are used in a command name except in TITLE1, TITLE2, TITLE3, TITLE4,- NOTE1 and NOTE2. The number must immediately follow TITLE or NOTE and is part of the command name. A blank space must precede any descriptive words used immediately after a command name. When an instruction has more than one form, the alternative form(s) is given just below and indented. 3. Some command names have a qualifier denoted by "L" where "L" indicates either the letter A, B, C, D, E or F. The qualifier (without quotation marks) is part of the command name. One blank space, at least, must precede and follow the qualifier without any additional characters. Some of the TAPE instructions have two qualifiers. One instruction, RESET "V", has the qualifier "V" where "V" denotes the letter V, W, X, Y or Z. Instructions with a qualifier are considered distinct from the similar instruction without a qualifier and are not indented. 4. Parentheses enclosing a letter indicate the type of argument [number) allowed. To make the the type of argument used explicit, descriptive words are used as much as possible. Lower case letters always represent integers without a decimal point. Examples are (r) = the number of rows and (c) = the number of columns^ Capital letters are used as follows: (C) = a COLUMN number, which must not have a decimal point (E) = EITHER a column number or a constant (K) = a CONSTANT, which must have a decimal point (N) = an instruction NUMBER with or without a decimal point (R) = a ROW number, which must not have a decimal point 5. On the extreme right, auxiliary information is given. Use of this information can prevent errors. Notes are defined as follows. Note on number of arguments is always first. A = an abbreviation exists B = this" instruction may store values below NRMAX C = this instruction cannot be stored for repeated execution D = number of arguments in the instruction must be odd, but cannot exceed 100 E = number of arguments in the instruction must be even, but cannot exceed 100 M = this instruction must be stored for repeated execution N = execution of this - instruction may or will affect the value of NRMAX P = this instruction produces printing S = one or more synonyms exist or this is an abbreviation of another instruction V = the number oT arguments is variable, but cannot exceed 100 W = this instruction will work anywhere in the worksheet, i.e. below NRMAX X = this particular form oT the instruction does not provide storage of results If V, D or E is not applicable, the exact number of arguments allowed is given. This information is summarized in the footnote which appears below and on all other pages. (C)=C0LUMN number; (E)=EITHER col number or constant; 00 =C0NSTANT; (N)=instr. nulber (R)=R0W number; (small letter) = always integer; qualifier "L"=LETTER A,B,C,D,E or F. Abbreviation; B=below NRMAX; C=cannot store; D=args odd; E=args even; M=must store; N=affect NRMAX; P=print; S=synonym; V=args variable; W=work below NRMAX; X=no storage 242 ABRIDGE row (R) o£ columns (C) , (C) , ... (C) ABRIDGE row (R) of columns (C) , (C) ... (C) with (K) significant digits ABRIDGE row (R) of (C) . . . (C) with (K) s . digits , (C) . . . (C) with (K) , etc ABRIDGE row (R) , (K) cols, (C) (s) s.d., (C) (s) ... $ max width 22, 3 blanks ABRIDGE row (R) , (K) cols, (C) (s) (m) max width, (C) (s) (m) , ... $ 3 blanks ABRIDGE row [R) of (K) cols , (C) (s) (m) (b) blanks , (C) (s) (m) (b) , ... ABRIDGE "L" format, row (R) of columns (C) , (C) ... (C) ABS value of (E) put in column (C) ABS value of (E) , multiply by (E), add to (E) , put in column (C) ABSOLUTE value of (E) put in column (C) ABSOLUTE value of (E) , multiply by (E) , add to (E) , put in column (C) ACCURACY of (E) compared to (E) put in column (C) ACOS of (E) put in column (C) ACOS of (E) , multiply by (E) , add to (E) , put in column (C) ACOSD of (E) , put iji column (C) ACOSD of (E) , multiply by (E) , add to (E) , put in column (C) ACOSH of (E) , put in column (C) ACOSH of (E) , multiply by (E) , add to (E) , put in column CC) ACOT of (E), put in column (C) ACOT of (E) , multiply by (E) , add to (E) , put in column (C) ACOTD of (E), put in colum (C) ACOTD of (E) , multiply by (E) , add to (E) , put in column (C) ACOTH of (E) , put in column (C) ACOTH of (E) , multiply by (E) , add to (E) , put in column (C) ADD (E) to (E) and put in column CC) ADD (E) to (E) , multiply by (E) , add to (E) , put in column CC) ANTILOG of (E), put in column (C) ANTILOG of (E) , multiply by (E) , add to (E) , put in column CC) ASIN of (E) , put in column CC) ASIN of (E) , multiply by (E) , add to (E) , put in column CC) ASIND of CE), put in column (C) ASIND of (E) , multiply by CE) , add to CE) , put m column CC) ASINH of CE) , put in column CC) ASINH of CE), multiply by (E) , add to CE) , put in column CC) ATAN of CE), put in column CC) ATAN of (E) , multiply by CE) , add to CE) , put in column CC) ATAND of CE), put in column CC) ALAND of CE) , multiply by (E) , add to CE) , put in column CC) ATANH of CE) , put in column CC) ATANH of CE) , multiply by CE) , add to CE) , put in column CC) ATOMIC mass table put in column CC) AVERAGE of column CC) put in column (C) V,P,W V,P,W V,P,W V,P,W V,P,W V,P,W V,P,W 2,S 4,S 2, A 4, A 3 2 4 2 4 2 4 2 4 2 4 2 4 3 5 2 4 2 4 2 4 2 4 2 4 2 4 2 4 1 2 ***** ARRAY OPERATIONS AADD the array (R) , CQ size Cr)x(c) to array (R) , (C) size (r)x(c) put m (_R) , CC) AADD the array in (R) , CQ size Cr)xCc), to array CR),(C), put in CR),(C) AADD the array in (R),(C) of size CrMc) to CE), put array in (RJ.CC) AAVERAGE on first col of array in CR) , CC) size CrMc), put array in {R),LQ 10,S,W 8,S,W 7,¥ 6,¥ CC)=COLUMN number; CE)=EITHER col number or constant; C.K) CONSTANT; CN) = mstr. number CR)=ROW number; Csmall letter) = always integer; qualifier "L"-LETTER A,B C,D,E or F. A=abbreviation; B=below NRMAX; C=cannot store; D=args odd; E=args even; M=must store; N=affect NRMAX- P=print; S=synonym; V=args variable; W=work below NRMAX; X=no storage 243 MVERAGE on (K) in first col of array (R) , (C) size (r)x(c) put row in (R) , (C) ACOALESCE on first col of array in (R) , (C) size (r)x(c), put array in (R) , (C) ACOALESCE on (K) in first col of (R) , (C) size (r)x(c) put row in (R) , (C) ADEFINE the array in (R),(C) of size (r)x(c) to be equal to (K) ADIV the array (R),(C) size (r)x(c) by array (R),(C) size (r)x(c) put in (R),(C) ,ADIV the array in (R),(C) size (r)x(c), by the array (R),(C), put in (R),(C) ADIV the array in (R) , (C) of size (r)x(c), by (E) , put array in (R) , (C) ADIVIDE array (R),(C) size (r)x(c) by array (R),(C) size (r)x(c) put in (R),(C) ADIVIDE the array in (R),(C) size (r)x(c) by array (R),(C), put in (R),(C) ADIVIDE the array (R),(C), size (r)x(c) by (E) put array in (R),(C) AERASE the array in (R) , (C) of size (r)x(c) AMOVE the array in (R),(C) of size (r)x(c) to (R),(C) AMULT array in (R) , (C) size (r)x(c) by array (R),(C) size (r)x(c) put in (R) , (C) AMULT the array in (R),(C) size (r)x(c) by the array (R),(C), put in (R) , (C) AMULT the array in (R),(C) of size (r)x(c) by (E) , put array in (R) , (C) AMULTTPLY array (R) , (C) size (r)x(c) by (R),(C) size (r)x[c) put in (R) , (C) AMULTIPLY array in (R) , (C) size (r)x(c) by array in (R),(C) put in (R),(C) AMULTIPLY the array in (R) , (C) size (r)x(c) by (E) put array in (R),(C) APRINT the array in (R),(C) of size (r)x(c) APRINT "L" format, the array in (R),(C) of size (r)x(c) APROPERTIES of the array in (R),(C) of size (r)xCc) APROPERTIES of the array in (R) , (C) of size (r)x(c), put in column (C) APROPERTIES of array in (R),(C) of size (r)x(c), put column ave's in (R),(C) APROPERTIES of (R) , (C) size (r)x(c), put prop in (C), col ave's in (R) , [C) APROPERTIES of (R) , (C) size (r)x(c) col ave's in (R) , (C) row ave's in (R),(C) APROPERTIES array (R) , (C) size (r)x(c), in (C) , ave's in (R),(C) and (R) , (C) ARAISE array (R),(C) size (r)x(c) to array (R),(C) size (r)x(c) put in (R),CC) ARAISE the array in (R) , (C) of size (r)x(c) to array (R),CC), put in (R) , (C) ARAISE the array in (R) , (C) of size (r)x(c) to (E) , put array in (R) , (C) ASUB array (R),(C) size (r)x(c) minus array (R),(C) size (r)x(c) put in (R),(C) ASUB array in (R),(C) size (r)x(c) minus the array (R),(C), put in [R),(C) ASUB the array in (R),(C) of size (r)x(c) minus (E), put array in CR),CQ ASUBTRACT array (R) , (C) size (r)x(c) minus array (R) , (C) size (r)x(c) in CR) , CQ ASUBTRACT array (R) , (C) size (r)x(c) minus array (R),(C) put in (R),CC) ASUBTRACT the array in (R),(C) size (r)x(c) minus (E), put array in CR),(C) ATRANSPOSE the array in (R),(C) of size (r)x(c) into (R),(C) AZERO the array in (R) , (C) of size (r)x(c) SAPROPERTIES of array in (R),(C) of size (r)x(c) put properties in column (C) SAPROPERTIES of (R) , (C) size (r)x[c) put column ave's in (R),(C) SAPROP of (R),(C) size (r)x[c) put properties in col (C) col ave's in [R) , ff) SAPROP of (R),(C) size (r)xCc) put col ave's in CR),(C) row ave's in CR),CC) SAPROP of (R),(C) size (r)x(c) put in CQ col ave's CR),(C) row ave's CR) , CQ 7,W 6,W 7,W 5,S,W 10,S,W ,S,W ,S,W A,W ,A,W ,A,W ,S,W ,S,W S,W ,S,W ,S,W 10.A.W ,A,W ,A,W ,W,P ,W,P ,W,X,P ,W,P,B ,W,P ,W,P,B 8,W,P 9,W,P,B 10,W 8,W ,W ,s,w ,S,W ,S,W A,W ,A,W ,A,W ,s,w ,S,¥ ,f,B ,W ,ff,B ,¥ ,¥,B 7, 10. 8 7 4 6 10 8 7 BACKSPACE TAPE "L" unit, (n) records BEGIN storing instructions for later use BEGIN storing instructions starting with instr no. BESIN of (K) put in column (C) $ if nrmax exceeds 99, BESJN of (K) put in column (C) $ if nrmax exceeds 99, BESKN of (K) put in column (C) $ if nrmax exceeds 99, BIONE of (E) put in column (C) CN) $ no. less than 1000 only 1st 100 computed only 1st 100 computed only 1st 100 computed 1 0,C 1,C 2 2 2 2 (C)=C0LUMN number; (E)=EITHER col number or constant; (K)=CONSTANT; CN)=instr. number (R)=ROW number; (small letter) = always integer; qualifier "L"=LETTER A,B,C,D,E or F. Abbreviation; B=below NRMAX; C=cannot store; D=args odd; E=args even; M=must store; N=affect NRMAX; P=print; S=synonym; V=args variable; W=work below NRMAX; X=ho storage 244 BIZERO of (E) put in column (C) 2 BJONE of (E) put in column (C) 2 BJZERO of (E) put in column (C) 2 BKONE of (E) put in column (C) 2 BKZERO of (E) put in column (C) 2 BOLDISTRIBUTION for temp (E) , wave nos in (C) , degens (C) , put table in (C) on 4 BYONE of (E) put in column CC) 2 BYZERO of (E) put in column CC) 2 CADD real (E) imag (E) to real (E) imag (E) put real in col (C) imag in col (C) 6 (DIVIDE real (E) imag (E) by real (E) imag (E) put real in col (C) imag in (C) 6 CEIONE of R equal to (E) , A equal to (E) , put x in col (C) and y in col (C) 4 CEIZERO of R equal to (E) , A equal to (E) , put x in col (C) and y in col(C) 4 CEKONE of R equal to (E) , A equal to (E) , put x in col (C) and y in col (C) 4 CEKZERO of R equal to (E) , A equal to (E) , put x in col (C) and y in col (C) 4 CENSOR col (C) for values less than or equal to (E) , replace by (E), put in (C) 4 CERF of (E) put in column (C) 2 CGS system of fundamental physical constants, centimeter-gram-second CHANGE sign of values in columns (C) , (C) ... (C) V CIONE of R equal to (E) , A equal to (E) , put x in col (C) and y in col CQ 4 CIZERO of R equal to (E) , A equal to (E) , put x in col (C) and y in col CC) 4 CKONE of R equal to (E) , A equal to (E) , put x in col CC) and y in col (C) 4 CKZERO of R equal to (E) A equal to (E), put x in col (C) and y in col (C) 4 CLOSE UP rows with (K) in columns (C) , (C) ... (C) $ puts zeros at bottom V (MULTIPLY real (E) imag (E) by real CE) imag (E) put real in (C) imag in (C) 6 COMPARE (E) to (E) using relative tolerance (E) 3,M CORRELATION between (p) variables in columns (C), (C) ... (C) V,P,X CORRELATION (p) var's in (C) ... CC), put array of simple coeffs in (R) , CC) V,P,B CORRELATION for (p) in (C) . . . (C) , put r coeffs in (R),(C), rho in (R) , (C) V,P,B COS of (E) put in column (C) 2 COS of (E), multiply by (E) , add to (E), put in column (C) 4 COSD of (E) put in column (C) 2 COSD of (E), multiply by CE), add to (E), put in column CC) 4 COSH of (E) put in column (C) 2 COSH of (E) , multiply by (E) , add to (E) , put in column (C) 4 COT of (E) put in column (C) 2 COT of (E), multiply by (E), add to (E) , put in column (C) 4 COTD of (E) put in column (C) 2 COTD of (E) , multiply by (E) , add to (E) , put in column (C) 4 COTH of (E) put in column (C) 2 COTH of (E), multiply by (E), add to (E), put in column (C) 4 COUNT length of col (C) put in CC) $ searches from below for first nozero number 2 CPOLAR for x = (E) , y = (E) put rho in col (C) , theta in col (C) 4 CREAD TAPE "L" unit, using (n) records into columns (C) , CC) ... CC) V,N CREAD TAPE "L" "L" unit and format, using (n) records, into cols CC) ... CC) V,N CRECTANGULAR for rho = (E) , theta = CE) put x in col CC) , y in col CC) 4 CSET TAPE "L" unit, using (n) records, into column CC) 2,N CSET TAPE "L" unit, using (n) records, into row (R) of column CC) 3,N CSUBTRACT real CE) imag CE) from real (E) imag CE), put real in CC) imag in CC) 6 CTOF for centigrade CE) put Fahrenheit equivalent in column CC) 2 CC)=COLUMN number; CE)=EITHER col number or constant; (K)=CONSTANT; CN)=instr. number CR)=ROW number; Csmall letter) = always integer; qualifier "L"=LETTER A,B,C,D,E or F. A=abbreviation; B=below NRMAX; C=£annot store; D=args odd; E=args even; M=must store; N=affect NRMAX; P=print; S=synonym; V=args variable; W=work below NRMAX; X=no storage 245 DEFINE (E) into column (C) 2 DEFINE the constant (K) into row (R) o£ column (C) 3 DEFINE the value in row (R) of column (C) into column (C) 3 DEFINE the value in row (R) of column (C) into row (R) of column (C) 4 DEMOTE by (r) rows, col (C) into col (C) , col (C) into col (C) , etc. D,N DEMOTE all values in the worksheet by (r) rows i'n DIM the worksheet to be (r) rows by (c) columns $ r x c at most 12,500 2 *S DIMENSION the worksheet to be (r) rows by (c) columns $ r x c at most 12,500 2'a DIV (E) by (E) and put in column (C) 3 s DIV (E) by (E), multiply by (E) , add to (E), put in column (C) 5!s DIVIDE (E) by (E) and put in column (C) 3 A DIVIDE (E) by (E) , multiply by (E) , add to (E) , put in column (C) 5,'a DUMMY "L" $ available for using one's own Fortran subroutines V DUPLICATE (t) times, the array in (R) , (C) of size (r)x(c), put in (R) , (C) 7,N EINSTEIN of temperatures (E) , wave numbers (E) , put table in (C) and succ. cols 3 EINSTEIN temps (E) , wave nos (E) , R=(K), t>ut table in (C) and succ. cols 4 ELLIPTICAL FIRST of (E) put in column (C) 2 ELLIPTICAL SECOND of (E) put in column (C) 2 ENDFILE TAPE "L" unit ERASE columns (C) , (C) ... (C) V ERASE the entire worksheet and reset nrmax to zero N ERROR of (E) put in column (C) 2 EXCHANGE col (C) with col (C) , col (C) with col (C) , etc. E EXECUTE instructions numbered (N) through (N) , (t) times 3,S EXECUTE instructions numbered (N) through (N) once 2,S EXECUTE instruction numbered (N) once 1,S EXIONE of (E) put in column (C) 2 EXIZERO of (E) put in column (C) 2 EXKONE of (E) put in column (C) 2 EXKZERO of (E) put in column (C) 2 EXP of (E) put in column (C) 2,S EXP of (E), multiply by (E) , add to (E) , put in column (C) 4,S EXPAND (E) to power (p) in increments of (i) , put in col (C) and successive cols 4 EXPAND (E) to power (K) in increments of (K) , put in (C) and succ. columns 4 EXPONENTIAL of (E) put in column (C) 2, A EXPONENTIAL of (E) , multiply by [E) , add to CE) , put in column (C) 4, A EXTREMA for x in (C) y in (C) put max x in (C) max y in (C) min x (_Q min y (C) 6,S FINISH storing instructions for later use 0,C FIT y in col (C) , weights (E) , (k) variables in columns (C) , (C) ... (Q V,P,X FIT y in (C) , weights (E) , (k) var's in cols (TO . . . (C) , put coeffs in col CQ V,P,B FIT (C), wts (E), to (k) in (C)...(C), put coeffs in CQ, residuals in (C) V,P,B (C)=C0LUMN number; (E)=EITHER col number or constant; (K)=CONSTA NT; (N)=instr. number (R)=ROW number; (small letter) = always integer; qualifier "L"=LETTER A,B,C,D,E or F. A=abbreviation; B=below NRMAX; C=cannot store; D=args odd ; E=args even; M=must store; N=affect NRMAX; P=print; S=synonym; V=args variable; W=work below NRMAX; X=no storage 246 FIT (C), (E), (k), (C)...(C), put coeff in (C) , res. in (C), sd of pv in (C) V,P,B FIT (C), (E), (k), (C)...(C), put in (C), (C), (C) and Fourier coef in (C) V,P,B FIT (C), (E), (k), (C)...(C), put in (C) , (Q , (C) , (C) vc matrix in (R) , (C) V.P.B FIXED with (d) digits after decimal point 1 FLEXIBLE to return to readable printing FLIP column (C) into column (C) , column (C) into column (C) , etc E FLIP the entire worksheet upside down FLOATING with (s) significant digits 1 FLOATING with eight significant digits FORMAT "L" ( ) $ put regular Fortran format inside parentheses 0,C F PROBABILTY with (E) and (E) degrees of freedom, for (E) , put tail-area in (C) 4 FRACTIONAL part of (E) put in column (C) 2 FRACTIONAL part of (E) , multiply by (E) , add to (E) , put in column (C) 4 FREQUENCY distribution of column (C) put in column (C) 2,N FREQUENCY distribution of column (C) , use (k) classes, put in column (C) 3,N FREQUENCY dist'n of col (C) , use (k) classes of length (K) , put in col (C) 4,N FREQUENCY of (C) , use (k) classes of length (K) , start at (K), put in col (C) 5,N FREQUENCY of (C) , put lower boundaries in (C) , upper in (C), freq's in (C) 4,N FREQUENCY of (C) using (k) classes, put. in columns (C) , (C) and (C) S,N FREQUENCY of (C) using fk) classes of length (K) put in cols (C) , (C) and (C) 6,N FREQUENCY of (C) , classes (k) , length (K) , start at (K) , put in (C) , (C) and (C) 7,N FTOC fahrenheit is (E) put centigrade equivalent in column (C) 2 GAUSS QUADRATURE with (K) points, from (K) to (K) , put x in (C) , weights in (C) 5,N (an integer can be used instead of a constant) GENERATE from (K) in steps of (K) to (K) steps (K) to (K) , ... , put in col (C) E,N Can integer can be used instead of a constant) HARMONIC analysis of column (C) for (n) ordinates, put coefficients in col (C) 3 HEAD column (C)/ $ 12 characters after / used as column heading 1,C HERMITE polynomial order (n) of col (C) , put in column (C) and successive cols 3 HIERARCHY of column (C) , put locations of smallest thru largest in column (C) HISTOGRAM using mid-points in column (C) and frequencies in column (C) 2,P IFEQ (E) to (E) within the absolute tolerance (E) 3,M IFEQ (E) to (E) 2,M IFGE (E) to (E) 2,M IFGT (E) than (E) 2,M IFLE (E) to (E) 2,M IFLT (E) than (E) 2,M IFNE (E) to (E) with absolute tolerance (E) 3,M IFNE (E) to (E) 2,M (C)=COLUMN number; (E)=EITHER col number or constant; (K) =CONSTANT ; (N)=instr. number (R) T =ROW number; (small letter) = always integer; qualifier "L"=LETTER A,B,C,D,E or F. A=afebreviation; B=below NRMAX; C=cannot store; D=args odd; E=args even; M=must store; N=affect NRMAX; P=print; S=synonym; V=args variable; W=work below NRMAX; X^ho storage 247 INCREMENT instruction number (N) by (E) , (E) . . . CE) $ no. of args in inst (N) + 1 V,M INSERT into col (C) from (C) at every (i) row, start with row (R) , put in (C) 5,N INTEGER part of (E) put in column (C) 2 INTEGER part of (E) , multiply by (E) , add to (E) , put in column (C) 4 INTERPOLATE x in (C) y in (C) length (n) , values (v) in (C) , pts (p) , put in (C) 7 INTJO of (E) put in column (C) 2 INVERT the matrix in (R) , (C) of size (V)x(c) and put in (R) , (C) 6,S,W ISETUP x in (C) , y in (C), desired y in (C) , put in col (C) and next three cols 4,N ISOLATE x in (C) , y in (C) desired y equal to (K) , put in columns (C) and (C) 5,N ISOLATE x in (C) , y in (C) , for (K) , use (p) points, put in cols (C) and (C) 6,N ITERATE x in (C) y in (C) desired y in col (C) put in (C) and next three cols 4,N KBIONE of (E) put real part of result in col (C) imaginary part in col (C) 3 KBIZERO of (E) put real part in col (C) and imaginary part in col (C) 3 KBKONE of (E) put real part in col (C) and imaginary part in col (C) 3 KBKZERO of (E) put real part in col (C) and imaginary part in col (C) 3 KEXIONE of (E) put real part in col (C) and imaginary part in col (C) 3 KEXIZERO of (E) put real part in col (C) and imaginary part in col (C) 3 KEXKONE of (E) put real part in col (C) and imaginary part in col (C) 3 KEXKZERO of (E) put real part in col (C) and imaginary part in col (C) 3 LAGUERRE polynomial order (n) of col (C), put in col (C) and successive cols 3 LEGENDRE polynomial order (n) of col (C) , put in col (C) and successive cols 3 LIST (n) $ controls listing of instructions, n is zero, one, two, three or four 1,S,P LIST instructions and diagnostics 0,S,P LOG of (E) put in column (C) $ log to the base e 2,S LOG of (E), multiply by (E), add to (E) , put in column (C) 4,S LOGE of (E) put in column (C) 2, A LOGE of (E), multiply by (E) , add to (E) , put in column (C) 4,A LOGTEN of (E) put in column (C) 2 LOGTEN of (E) , multiply by (E) , add to (E) , put in column (C) 4 MATCH column (C) with (E) , extract from (E) and put in column CC) 4 MAX value of column (C) put in column (C) 2,S MAX of column (C) put in col (C) , corresponding value of (C) into col (C) ... E,S MAXIMUM value of column (C) put in column (C) 2 ,A MAXIMUM of col (C) put in col (C) , corresp value of (C) in (C), ... E,A MAXMIN x in col (C) y in col (C) , put max x in (C) max y (C) min x CC) min y (C) 6,S MIN value of column (C) put in column (C) 2,S MIN of col (C) put in col (C) , corresp value of col (C) in CC) , ... E,S MINIMUM value of column CC) put in column (C) 2, A MINIMUM of col CC) put in col (C) corresp value of col CC) in col CC) ... E,A CC)=COLUMN number; (E)=EITHER col number or constant; Q0 CONSTANT; CN)=instr. number CR)=ROW number; (small letter) = always integer; qualifier "L"=LETTER A,B,C,D,E or F. A=abbreviation; B=below NRMAX; C=£annot store; D=args odd ; E=args even; M=must store; N=affect NRMAX; P=print; S=synonym; V=args variable; W=work below NRMAX; X^rio storage 248 MOUVT of compounds Z=(k), N=(k); Z=(k), N=(k); ... etc put in column (C) D MOVE the array in (R) , (C) of size (r)x(c) to (R),(C) 6,S,W MULT (E) by (E) and put in column (C) 3,S MULT (E) by (E), multiply by (E) , add to (E) , put in column (C) 5,S MULTIPLY (E) by (E) and put in column (C) 3,A MULTIPLY (E) by (E) , multiply by (E) , add to (E) , put in column (C) 5 ,A ***** MATRIX OPERATIONS ***** MADD the matrix in (R) , (C) size (r)x(c) to (R) , (C) size (r)x(c) put in (R) , (C) 10,S,W MADD the matrix in (R) , (C) size (r)x(c) to matrix in (R) , (C) put in (R) , (C) 8,S,W f-DEFINE the matrix in (R) , (C) of size (r)x(c) to have all elements equal to (K) 5,S,W MDIAGONAL the matrix in (R) , (C) of size (r)x(c) equal to (E) on the diagonal 5,W MEIGEN of the matrix in (R) , (C) of size (r)x(c), put eigenvalues in column (C) 5,W ME I GEN of matrix in (R) , (C) size (r)x(c) put eigenvectors in (R) , (C) 6,W MEIGEN matrix in (R),(C) size (r)x(c), put values in (C) , vectors in (R) , (C) 7,W MERASE the matrix in (R) , (C) of size (r)x(c) $ sets every element in matrix = 4,S,W MIDENTITY in (R),(C) of size (r)x(c) 4,W MINVERT the matrix in (R) , (C) of size (r)x(c), put inverse in (R) , (C) 6,A,W MKRONECKER product (R) , (C) size (r)x(c) by (R) , (C) size (r)x(c) put in (R) , (C) 10,W MMATVEC make by rows column (C) into the matrix in (R) , (C) of size (r)x(c) 5,W MMATVEC col vector in (R) , (C) into matrix in (R) , (C) of size (r)x(c) 6,W MMOVE the matrix in (R) , (C) of size (r)x(c) to (R) , (C) 6,S,W MMULT matrix (R) , (C) size (r)x(c) by matrix (R) , (C) size (r)x(c) put in (R) , (C) 10.S.W MMULTIPLY matrix (R) , (C) size (r)x(c) by (R) , (C) size (r)x(c) put in (R),(C) 10,A,W MORTHO mat (R) , (C) size (r)x(c) weights (E) put orthnormal vectors in (R) , (C) 7,W MORTHO mat (R) , (C) size (r)x(c) weights (E) put in (R) , (C) trans mat (R) , (C) 9,W MPRINT the matrix in (R) , (C) of size (r)x(c) 4,W,P MPRINT "L" format, the matrix in (R),(C) of size (r)x(c) 4,W,P ■MPROPERTIES of the matrix in (R),(C) of size (r)x(c) 4,W,P,X PROPERTIES of matrix in (R) , (C) size (r)x(c) put properties in column (C) 5,W,P,B MPROPERTIES of (R) , (C) size (r)x(c) put column ave's in (R) , (C) . 6,tf,P PROPERTIES of (R),(C) size (r)x(c) put prop's in (C) col ave's in (R) , (C) 7,W,P,B MPROPERTIES of (R) , (C) size (r)x(c) put col ave's (R),(C) row ave's (R.) , CC) 8,W,P MPROPERTIES of (R) , (C) size (r)x(c) put in (C) , ave's in (R) , (C) and (R) , (C) 9,W,P,B MRAISE the matrix in (R) , (C) of size (r)x(c) to power (K) , put in (R) , (C) 7,S,W (an integer can be used instead of a constant) MSCALAR matrix (R),(C) of size (V)x(c) by constant CK) , put matrix in [R) , CQ 7,S,W MSUB mat CR),(C) size (r)x(c) minus mat CR),CQ size Cr)x[c) into (R) , (C) 10,S,W MSUB matrix in (R) , (C) size (r)x[c) minus matrix (R) , (C) put in (R) , [C) SUBTRACT mat (R),(C) size (r)x(c) minus mat (R) , (C) size (r)x[c) into [R) , (C) 10,A,W MSUBTRACT matrix (R) , (C) size (r)x(c) minus mat (R),(C) put in (R) , (C) 8 MTRANSPOSE the matrix (R) , (C) size (r)x(c) into matrix in (R) , [C) 6 MTRIANGULARIZE the matrix in (R),(C) size (r)x(c) into matrix in (R) , (C) 6 MTRIANGULARIZE matrix (R) , (C) size (r)x(c) in (R),(C) and inverse in (R) , (C) 8 MVECDIAGONAL the matrix in (R) , (C) of size (r)x(c), put diagonal in column (C) 5 MVECDIAGONAL matrix (R) , (C) size Cr)x(c), put col vector in (R) , (C) 6 MVECMAT vectorize row by row matrix in (R) , (C) size (r)x(c) into column (C) 5 MVECMAT matrix (R) , (C) size (r)x(c), put vector into (R),(C) and below 6 MZERO the matrix in (R) , (C) of size (r)x(c) 4 M(AD) mat (R),(C) size (r)x(c) times mat with (C) in diag, put mat in (R) , (C) M(AV) matrix in (R) , (C) size (r)x(c) by vector in col (C) put vector in col (C) 6 S,W A,W S,W W W w w w w W,S w w (C)=COLUMN number; (E)=EITHER col number or constant; (K)=CONSTANT; CN)=instr. number (R)=ROW number; (small letter) = always integer; qualifier "L"=LETTER A,B,C,D,E or F. A=abbreviation; B=below NRMAX; C=cannot store; D=args odd; E=args even; M=must store; N=affect NRMAX; P=print; S=synonym; V=args variable; W=work below NRMAX; X=ho storage 249 M(AV) matrix in (R),(C) size (r)x(c) by column (C) put vector in (R) , (C) 7,W M(DA) mat (R) , (C) size (r)x(c) premult by mat with (C) in diag, put in (R),(C) 7,W M(V'A) matrix (R),(C) size (r)x(c), vector in col (C) put vector in row (R) 6,W M(V'A) mat (R) , (C) size (r)x(c), vector in col (C),put row vector in (R),(C) 7,W M(XAX') a-mat in (R) , (C) size (r)x(c), x-mat (R) , (C) size (r)x(c), into (R) , (C) 10, W M(XX') matrix in (R) , (C) o£ size (r)x(c) into (R),(C) 6,W M(X'AX) a-mat in (R),(C) size Cr)x(c), x-mat in (R),(C) size (r)x(c), in (R),(C) 10, W M(X'X) matrix in (R) , (C) of size (r)x(c) into (R),(C) 6,W SMPROPERTIES o£ matrix in (R) , (C) of size (r)x[c) put properties in column (C) 5,W,B SMPROPERTIES of (R),(C) size (r)x(c) put column ave's in (R),(C) 6,W SMPROPERTIES of (R) , (C) size (r)x(c) put prop's in (C) col ave's in (R) , (C) 7,W,B SMPROP of (R),(C) size (r)x(c) put col ave's in (R),(C) row ave's in (R),(C) 8,W SMPROP of (R),(C) size (r)x(c) put in (C) col ave's (R),(C) row ave's (R) , (C) 9,W,B NEGEXPONENTIAL of (E) put in column (C) 2 NEGEXPONENTIAL of (E) , multiply by (E) , add to (E) , put in column (C) 4 NEW PAGE $ assures next printing will start on a new page NHISTOGRAM using midpoints in col (C) and frequencies in col (C) $ no new page 2,P NO LIST $ suppresses listing of instructions NORMLAGUERRE polynomial of order (n) of col (C) put in col (C) and succ. cols. 3 NOTE $ information in hollerith card columns 7-80 is printed immediately 0,C,P NOTE1 $ next sixty characters stored for printing first half of note 0,C NOTE2 $ next sixty characters stored for printing second half of note 0,C NPRINT columns (C) , (C) , ... (C) $ no new page, col headings or titles V,P NPRINT columns (C), (C), ... (C) with (K) significant digits V,P NPRINT cols (C)..(C) with (K) s. digits, (C) . . . (C) with (K) s. digits, etc. V,P NPRINT (K) cols, (C) with (s) s.d., (C) with (s) , etc $ max width 22,3 blanks V,P NPRINT (K) cols, (C) with (s) s.d. and Cm) max width, (C) , (s) , (m) ... V,P NPRINT (K) cols, (C) with (s) s.d. (m) max w (b) blanks, [C) , (s) , (m) , (M ... V,P NPRINT "L" format, columns (C) , [C) ... (C) V,P NULL $ this instruction does nothing OMNITAB $ information on card is printed as title at the top of each page 0,N,C ONEWAY analysis for data in column (C) with group number in column (C) 2,P,X ONEWAY for (C) with tag in (C) put statistics in CC) and next three cols 3,P ONEWAY for (C) with (C) , put tag in (C) , number (C) , means (C) s.d. in (C) 6,P ORDER independently columns (C) , (C) ... (C) smallest to largest V PAGE PLOT columns (C) , (C) ... (C) against column (C) $ max of 6 arguments V,P PAGE PLOT cols (C) ... (C) vertical scale from (K) to (K) against col (C) V,P PAGE PLOT cols (C) . . . (C) against col (C), horizontal scale from (K) to (K) V,P PAGE PLOT cols (C) . . . (C) vertical (K) to (K) vs col (C) horizontal (K) to (K) V,P (C)=C0LUMN number; (E)=EITHER col number or constant; (K)= CONSTANT; (N)=instr. number (R)=R0W number; (small letter) = always integer; qualifier "L"=LETTER A,B,C,D,E or F. A=abbreviation; B=below NRMAX; C=£annot store; D=args odd; E=args even; M=must store; N=affect NRMAX; P=print; S=synonym; V=args variable; W=work below NRMAX; X=no storage 250 PAGE PLOT cols (C) . . . (C) vs (C) horizontally (K) to (K) vertically (K) to (K) V,P PARPRODUCT of column (C), put partial products in column (C) 2 PARSUM column (C) , put partial sums in column (C) 2 PARTFUNCTION temp is (E) wave nos in (C) degens in (C) put table in (C) on 4 PERFORM instructions numbered (N) through (N), (t) times 3,S PERFORM instructions numbered (N) through (N) once ' 2,S PERFORM instruction numbered (N) once 1,S PFATOMIC temp is (E) mol wt (E) wave nos in (C) degens (C) put table in (C) on 5 PFTRANSLATIONAL temp is (E) mol wt (E) put table in (C) and succ. cols 3 PLOT columns (C) , (C) ... (C) against column (C) $ max of 6 arguments V,P PLOT cols (C) ... (C) vertical scale from (K) to (K) against col (C) V,P PLOT cols (C) . . . (C) against col (C) , horizontal scale from (K) to (K) V,P PLOT cols (C)...(C) vertical (K) to (K), vs col (C) horizontal (X) to (K) V,P PLOT cols (C) . . . (C) vs (C) horizontally (K) to (K) vertically (K) to (K) V,P POLYFIT y in col (C) , using weights (E) , of degree (d) , predictor x in col (C) 4,P,X POLYFIT y in col (C) , wts (E), degree (d) , x in (C) , put coefficients in (C) 5,P,B POLYFIT y in (C) , wts (E) , deg (d) , x in (C) , put coeffs in (C) , residuals (C) 6,P,B POLYFIT (C), (E), (d), (C) put coeffs in (C), res in (C) sd of pv in (C) 7,P,B POLYFIT (C), (E), (d), (C) put in (C), (C), (C) and fourier coeffs in CC) 8,P,B POLYFIT (C), (E), (d), (C) put in (C), (C) , (C) , (C) vc matrix in (R) , (C) 10,P,E PRINT columns (C) , (C) ... (C) V,P PRINT columns (C) ... (C) with (K) significant digits V,P PRINT cols (C)...(C) with (K) s. digits, (C) . . . (C) with (K) s. digits, etc. V,P PRINT (K) cols, (C) with (s) s.d., (C) with (s) , etc. $ max width 22,3 blanks V,P PRINT (K) cols, (C) with (s) and max width (m) , (C) , (s) , (m) etc. V,P PRINT (K) cols, (C) with (s) s.d. (m) max w (b) blanks, (C) , (s) , (m) , (b) etc. V,P PRINT "L" format, columns (C), (C) ... (C) V,P PRINT NOTE $ causes information from notel and note2 to be printed immediately 0,P PRODUCT row by row of cols (C) , (C) , ... (C) put in col (C) $ at least 4 col nos V PRODUCT of columns (C) through (C) put in column (C) 3 PROMOTE by (r) rows, col (C) into col (C) , col (C) into col (C) , etc. D PROMOTE all values in the worksheet by (r) rows 1 PUNCH data in columns (C) , (C) ... (C) on hollerith cards $ 4 column limit V PUNCH "L" format, data in cols (C) ... (C) on hollerith cards V RAISE (E) to power (E) and put in column (C) 3 RAISE (E) to power (E), multiply by (E), add to (E), put in column (C) 5 RANKS of column (C) put in column (C) $ smallest has rank 1 2,B READ data on following cards into columns (C) , (C) ... (C) one card for each row V,N,C READ "L" format, (n) cards or rows, into columns (C) , (C) ... (C) V,N READ TAPE "L" unit into columns (C) , (C) ... (C) V,N READ TAPE "L", "L" unit and format, into columns (C) , (C) ... (C) V,N REPEAT instructions numbered (N) through (N) , (t) times 3,S REPEAT instructions numbered (N) through (N) once 2,S REPEAT instruction numbered (N) once 1,S RESET nrmax to equal (r) rows $ establishes new working length of worksheet 1,N RESET "V" equal to (K) $ "V" is variable V, W, X, Y or Z 1 (an integer can be used instead of a constant) RESTORE instruction (N) to (E), (E) ... (E) $ no of args in instr(N) +1 V REWIND TAPE "L" unit (C)=COLUMN number; (E)=EITHER col number or constant; (K)=CONSTANT; (N)=instr. number (R)=ROW number; (small letter) = always integer; qualifier *'L"=LETTER A,B,C,D,E or F. A=abbreviation; B=below NRMAX; C=cannot store; D=args odd; E=args even; M=must store; N=affect NRMAX; P=grint; S=synonym; V=args variable; W=work below NRMAX; X=ho storage 251 RMS of column (C) put root mean square in column (C) 2 ROUND the numbers in column (C) to (n) significant digits and put in column (C) 3 ROW SUM columns (C) , (C) ... (C) put in column (C) $ use at least 4 col nos V,S ROW SUM columns (C) through (C) and put in column (C) 3,S ROW SUM the entire worksheet and put in column (C) 1,S ROWSUM columns (C) , (C) ... (C) put in column (C) $ use at least 4 col nos V,S ROWSUM columns (C) through (C) and put in column (C) 3,S ROWSUM the entire worksheet and put in column (C) 1,S SCAN only the first (c) card columns on each of the following hollerith cards 1 SCORRELATION (p) variables in (C) ... (C) put array of simple coeffs in (R) , (C) V,B SCORRELATION (p) var's in (C) ... (C) put r coeffs in (R) , (C) rho in (R),(C) V,B SEARCH col (C) equal col (C) , move corresp nos in col (C) to (C) , (C) to (C) etc E SELECT in (C) nos approximating col (C) within abs tolerance (K) put in col (C) 4 SELECT in (C) nos approx col (C) to within abs tol (K) put in cols (C) to (C) 5 SELECT in (C) nos approx (C) within abs tol (K) put in (C) to (C) count (C) 6 SEPARATE from column (C) every (r) th row, start with row (R) , put in column (C) 4 SET in one column (C) , data on following hollerith cards 1,N,C SET starting with row (R) of column (C) data on following hollerith cards 2,N,C SET TAPE "L" unit into column (C) 1,N,C SET TAPE "L" unit starting with row (R) of column (C) 2,N,C SFIT y in (C) , weights (E) , (k) vars in cols (C)...(C), put coefficients in (C) V,B SFIT (C), wts (E), to (k) in (C) . . . (C) , put coeffs in (C) residuals in (C) V,B SFIT (C), (E), (k), (C)...(C), put coeff in (C) res in (C) sd of pv in (C) V,B SFIT (C), (E), (k), (C)...(C), put in (C), (C), (C) and Fourier coeff in (C) V,B SFIT (C) , (E) , (k) , (C) . . . (C) , put in (C) , (C) , (C) , (C) vc matrix in (R) , (C) V,B SHORTEN column (C) for column (C) equal to (K) put shortened cols in (C) and (C) 5,N SI system of fundamental physical constants $ formerly mksa SIN of (E) put in column (C) 2 SIN of (E) , multiply by (E) , add to (E) , put in column (C) 4 SIND of (E) put in column (C)" 2 SIND of (E) , multiply by (E) , add to (E) , put in column (C) 4 SINH of (E) put in column (C) 2 SINH of (E), multiply by (E), add to (E), put in column (C) 4 SKIP TAPE "L" unit, forward (n) records 1 SOLVE lin eqs with coeffs in (R) , (C) size (r)x(c) consts in (C) , put sol in (C) 6 SONEWAY analysis for (C) with group number (C) put in (C) and next three cols 3 SONEWAY for data (C) group no (C) put in cols (C) , (C) , (C) and (C) 6 SORT column (C) min to max, carry along corresp values in cols (C) ... (C) V SORT column (C) 1,S SPACE (p) lines on printed page 1 SPACE one line on printed page SPOLYFIT y in col (C) , weights (E) , degree (d), x in (C) put coeffs in col (C) 5 ,B SPOLYFIT y in (C), wts (E) , deg (d) , x in (C) , put coeffs in (C) res in (C) 6,B SPOLYFIT (C), (E), (d), (C) put coeffs in (C) , res in (C), sd of pv in (C) 7,B SPOLYFIT (C), (E), (d), (C) put in (C) , (C) , (C) and Fourier coeffs in (C) 8,B SPOLYFIT (C), (E), (d), (C) put in (C) , (C) , (C) , (C) and vc matrix in (R) , (C) 10, B SQRT of (E) put in column (C) 2 SQRT of (E), multiply by (E), add to (E) , put in column [C) 4 SQUARE (E) and put in column (C) 2 (C)=COLUMN number; (E)=EITHER col number or constant; (K)=CONSTANT; (N)=instr. number (R)=ROW number; (small letter) = always integer; qualifier "L"=LETTER A,B,C,D,E or F. A=abbreviation; B=below NRMAX; C=cannot store; D=args odd; E=args even; M=must store; N=affect NRf^lAX; P=print; S=synonym; V=args variable; W=work below NRMAX; X^ho storage 252 SQUARE (E), multiply by (E) , add to (E), put in column (C) 4 SSTATISTICAL analysis of column (C) put statistics in (C) and next three cols 2,B SSTATISTICAL analysis of (C) , weights in (C) , put in (C) and next three cols 3,B SSTATISTICAL analysis of col (C), put statis in cols (C) , (C) , (C) and (C) 5,B SSTATISTICAL analysis of (C), weights (C) , put in col (C), (C), (C) and (C) 6,B STATISTICAL analysis of column (C) 1,P,X STATISTICAL analysis of column (C) , put statis in (C) and next three cols 2^p)b STATISTICAL anal, of (C) , wts in (C) , put statis in (C) and next three cols 3,P,B STATISTICAL anal of (C) wts in (C) don't put in (-C) $ - col no. = no storage 3,P STATISTICAL analysis of col (C), put statis in cols (C) , (C) , (C) and (C) S,P,B STATISTICAL anal, of (C) wts in (C) , put statis in cols (C), (C) , (C) and (C) 6,P,B STOP $ this is last card of last set of instructions 0,C STRUVE ONE of (E) put in column (C) 2 STRUVE ZERO of (E) put in column (C) 2 STWOWAY analysis for (r)x(c) table, data in (C) store in (C) and succ. cols 4,B STWOWAY analysis for (r)x(c) table, data (C) , store from (C) on, wts in (C) 5,B SUB (E) from (E) and put in column (C) 3,S SUB (E) from (E) , multiply by (E) , add to (E), put in column (C) 5,S SUBTRACT (E) from (E) and put in column (C) 3, A SUBTRACT (E) from (E) , multiply by (E) , add to (E) , put in column (C) 5, A SUM rows of column (C) and put sum in column (C) 2 SUM column (C) , rows (R) through (R) , put sum in column (C) 4 SUM col (C) , rows (R) , (R) ... (R) , put sum in col (C) $ at least 5 args V TAN of (E) put in column (C) 2 TAN of (E) , multiply by (E) , add to (E) , put in column (C) 4 TAND of (E) put in column (C) 2 TAND of (E) , multiply by (E) , add to (E) , put in column (C) 4 TANH of (E) put in column (C) 2 TANH of (E) , multiply by (E) , add to (E) , put in column (C) 4 TCHEBYSHEV polynomial of order (n) of col (C) put col (C) and successive cols 3 TITLE1 $ next 60 characters printed on first half of second line 0,C TITLE2 $ next 60 characters printed on second half of second line 0,C TITLE3 $ next 60 characters printed on first half of third line 0,C TITLE4 $ next 60 characters printed on second half of third line 0,C TITLEX $ 60 characters after 2nd space are printed on horizontal axis of plot 0,C TITLEY $ 51 characters after 2nd space are printed on vertical axis of plot 0,C TWOWAY analysis for (r) by (c) table, data in (C) , store in (C) and succ. cols 4,P,] TWOWAY anal, for (r) by (c) table, data in (C) , store from (C) on, wts in (C) 5,P,] UCHEBYSHEV polynomial order (n) of col (C) put in (C) and successive cols 3 UNIFORM RANDOM numbers starting with (K) put in column (C) 2 (an integer can be used instead of a constant) (C)=C0LUMN number; (E)=EITHER col number or constant; (K)=CONSTANT; (N)=instr. number (R)=ROW number; (small letter) = always integer; qualifier "L"=LETTER A,B,C,D,E or F. A=abbreviation; B=below NRMAX; C=cannot store; D=args odd; E=args even; M=must store; N=affect NRMAX; P=p_rint; S=synonym; V=args variable; W=work below HRMAX; X=no storage 253 WRITE TAPE "L" unit from columns (C) , (C) ... (C) V WRITE TAPE "L" "L" unit and format, from columns (C) , (C) ... (C) V ***** 7 ***** ZEROS BJONE put in (C) and (C) $ if nrmax exceeds 1000 only 1st 1000 computed 2 ZEROS BJZERO put in (C) and (C) $ if nrmax exceeds 1000 only 1st 1000 computed 2 ***** FND ***** (C)=C0LUMN number; (E)=EITHER col number or constant; (K)=CONSTANT; (N)=instr. number (R)=ROW number; (small letter) = always integer; qualifier "L"=LETTER A,B,C,D,E or F. A=abbreviation; B=below NRMAX; C=cannot store; D=args odd; E=args even; M=must store; N=affect NRMAX; P=print; S=synonym; V=args variable; W=work below NRMAX; X=no storage 254 FORM NBS-114A 11-71) U.S. DEPT. OF COMM. BIBLIOGRAPHIC DATA SHEET 1. PUBLICATION OR REPORT NO. NBS-TN-552 2. Gov t Accession No. 3. Recipient's Accession No. 4. TITLE AND SUBTITLE OMNITAB II USER'S REFERENCE MANUAL 5. Publication Date October._l.97L- 6. Performing Organization Code 7. AUTHOR(S) David Hogben, Sally T. Peavy and Ruth N. Varner 8. Performing Organization 10. Project/Task/Work: Unit No. Proj. 2050131 9. PERFORMING ORGANIZATION NAME AND ADDRESS NATIONAL BUREAU OF STANDARDS DEPARTMENT OF COMMERCE WASHINGTON, D.C. 20234 11. Contract/Grant No. 12. Sponsoring Organization Name and Address Same as No. 9 above. 13. Type of Repott & Period Covered Final 14. Sponsoring Agency Code 15. SUPPLEMENTARY NOTES 16. ABSTRACT (A 200-word or less factual summary of most significant information. If document includes a significant bibliography or literature survey, mention it here.) OMNITAB II, a highly user-oriented system for a large computer, is designed to make computing easy, accurate and effective, particularly for persons who are not pro- grammers. It is a general-purpose program, which can be learned quickly, for both simple and complex numerical, statistical and data analysis. OMNITAB executes in- structions written in the form of simple English sentences. Problem- solving is further enhanced by the natural structure of the system and its many features. OMNITAB has been used successfully in government, industry and universities across the country and in several centers abroad. The system has been implemented on large computers of at least seven different manufacturers. The original version of OMNITAB has been completely rewritten to make it as machine independent as possible and to implement many improvements. This manual describes Version 5.0. Details are presented so that the user can easily find the specific information needed in any particular instance. PART A is a simple, compact introduc- tion to OMNITAB for people who have had no experience using a large computer. PART B describes the general and special features of the OMNITAB system. PART C gives ex- planations, with short examples, for the use of specific instructions. PART D is a complete list of the instructions which are in the system. 17. key words (Alphabetical order, separated by semicolons) Automatic printing; Bessel functions: Data analysis: Data manipulation: Easy and effective programming in English; List of instructions; Matrix operations; Numerical analysis; OMNITAB II user oriented computing system; Self-teaching; Statistical analysis. 18. AVAILABILITY STATEMENT fX] UNLIMITED. I I FOR OFFICIAL DISTRIBUTION. DO NOT RELEASE TO NTIS. 19. SECURITY CLASS (THIS REPORT) UNCLASSIFIED 20. SECURITY CLASS (THIS PAGE) UNCLASSIFIED 21. NO. OF PAGES 264 22. Price $2.00 USCOMM-DC 66244-P71 * U. S. GOVERNMENT PRINTING OFFICE : 1971 O - 446-649 NBS TECHNICAL PUBLICATIONS PERIODICALS NONPERIODICALS JOURNAL OF RESEARCH reports National Bureau of Standards research and development in physics, mathematics, chemistry, and engineering. Comprehensive scientific papers give complete details of the work, including laboratory data, experimental procedures, and theoretical and mathematical analy- ses. Illustrated with photographs, drawings, and charts. Published in three sections, available separately: • Physics and Chemistry Papers of interest primarily to scientists working in these fields. This section covers a broad range of physical and chemical research, with major emphasis on standards of physical measurement, fundamental constants, and properties of matter. Issued six times a year. Annual subscription: Domestic, $9.50; $2.25 additional for foreign mailing. • Mathematical Sciences Studies and compilations designed mainly for the mathematician and theoretical physicist. Topics in mathematical statistics, theory of experiment design, numerical analysis, theoretical physics and chemis- ty, logical design and programming of computers and computer systems. Short numerical tables. Issued quarterly. Annual subscription: Domestic, $5.00; $1.25 additional for foreign mailing. • Engineering and Instrumentation Reporting results of interest chiefly to the engineer and the applied scientist. This section includes many of the new developments in instrumentation resulting from the Bureau's work in physical measurement, data processing, and development of test methods. It will also cover some of the work in acoustics, applied mechanics, building research, and cryogenic engineering. Issued quarterly. Annual subscription : Domestic, $5.00; $1.25 additional for foreign mailing. Applied Mathematics Series. Mathematical tables, manuals, and studies. Building Science Series. Research results, test methods, and performance criteria of building ma- terials, components, systems, and structures. Handbooks. Recommended codes of engineering and industrial practice (including safety codes) de- veloped in cooperation with interested industries, professional organizations, and regulatory bodies. Special Publications. Proceedings of NBS confer- ences, bibliographies, annual reports, wall charts, pamphlets, etc. Monographs. Major contributions to the technical literature on various subjects related to the Bureau's scientific and technical activities. National Standard Reference Data Series. NSRDS provides quantitative data on the physical and chemical properties of materials, compiled from the world's literature and critically evaluated. Product Standards. Provide requirements for sizes, types, quality, and methods for testing various indus- trial products. These standards are developed co- operatively with interested Government and industry groups and provide the basis for common understand- ing of product characteristics for both buyers and sellers. Their use is voluntary. Technical Notes. This series consists of communi- cations and reports (covering both other agency and NBS-sponsored work) of limited or transitory interest. Federal Information Processing Standards Publications. This series is the official publication within the Federal Government for information on standards adopted and promulgated under the Public Law 89—306, and Bureau of the Budget Circular A— 86 entitled, Standardization of Data Elements and Codes in Data Systems. TECHNICAL NEWS BULLETIN The best single source of information concerning the Bureau's research, developmental, cooperative, and publication activities, this monthly publication is designed for the industry-oriented individual whose daily work involves intimate contact with science and technology — for engineers, chemists, physicists, re- search managers, product-development managers, and company executives. Annual subscription: Domestic, $3.00; $1.00 additional for foreign mailing. Consumer Information Series. Practical informa- tion, based on NBS research and experience, covering areas of interest to the consumer. Easily understand- able language and illustrations provide useful back- ground knowledge for shopping in today's technolog- ical marketplace. NBS Special Publication 305, Supplement 1, Publications of the NBS, 1968-1969. When order- ing, include Catalog No. CI 3. 10: 305. Price $4.50; $1.25 additional for foreign mailing. Order NBS publications from: Superintendent of Documents Government Printing Office Washington, D.C. 20402 EDGE INDEX A Beginner's OMNITAB Bl How To Use OMNITAB II B2 Repeated Use Of Commands B3 Diagnostic Features And Accuracy B4 For More Effective Use Of OMNITAB II B5 The OMNITAB II Project CI Entering And Printing Data C2 Arithmetic Operations C3 Data Manipulation C4 Statistical Analysis > 4.2 Analysis Of One Column Of Data 4.5 Regression C5 Numerical Analysis C6 Repeat Mode C7 Array Operations C8 Matrix Operations C9 Bessel Functions CIO Thermodynamics Cll Index Of Commands Described in PART C D List Of Instructions